class MaterialImportBlock < ApplicationRecord
  MATCH_KINDS = ['sha256', 'exact_path', 'path_prefix', 'manual'].freeze
  REASONS = [
    'copyright_high_risk',
    'copyright_takedown',
    'adult_or_sensitive',
    'personal_information',
    'malware_or_dangerous_file',
    'duplicate_or_low_quality',
    'source_owner_request',
    'other'
  ].freeze

  belongs_to :created_by_user, class_name: 'User', optional: true

  validates :match_kind, presence: true, inclusion: { in: MATCH_KINDS }
  validates :reason, presence: true, inclusion: { in: REASONS }
  validates :sha256, length: { is: 64 }, allow_blank: true
  validate :match_value_must_be_present

  private

  def match_value_must_be_present
    return if match_kind == 'manual'
    return if sha256.present? || external_path_pattern.present?

    errors.add(:base, 'sha256 または external_path_pattern は必須です．')
  end
end
