# frozen_string_literal: true

class WeaponSeries < ApplicationRecord
  has_many :weapons, dependent: :restrict_with_error
  has_many :weapon_key_series, dependent: :destroy
  has_many :weapon_keys, through: :weapon_key_series

  validates :name_en, presence: true
  validates :name_jp, presence: true
  validates :slug, presence: true, uniqueness: true
  validates :order, numericality: { only_integer: true }

  scope :ordered, -> { order(:order) }
  scope :extra_allowed, -> { where(extra: true) }
  scope :element_changeable, -> { where(element_changeable: true) }
  scope :with_weapon_keys, -> { where(has_weapon_keys: true) }
  scope :with_awakening, -> { where(has_awakening: true) }
  scope :with_ax_skills, -> { where(has_ax_skills: true) }

  # Slug constants for commonly referenced series
  DARK_OPUS = 'dark-opus'
  DRACONIC = 'draconic'
  DRACONIC_PROVIDENCE = 'draconic-providence'
  REVENANT = 'revenant'
  ULTIMA = 'ultima'
  SUPERLATIVE = 'superlative'
  CLASS_CHAMPION = 'class-champion'

  def blueprint
    WeaponSeriesBlueprint
  end
end
