# typed: true class IgdbGame < ApplicationRecord extend T::Sig # Associations has_many :igdb_match_suggestions has_many :games, foreign_key: :igdb_id, primary_key: :igdb_id # Validations validates :igdb_id, presence: true, uniqueness: true validates :name, presence: true # Scopes scope :popular, -> { order(match_count: :desc) } scope :recent, -> { order(last_synced_at: :desc) } # Instance methods sig { void } def increment_match_count! increment!(:match_count) end sig { params(size: String).returns(T.nilable(String)) } def cover_image_url(size = "cover_big") return nil unless cover_url.present? # IGDB uses image IDs like "co1234" # We need to construct the full URL "https://images.igdb.com/igdb/image/upload/t_#{size}/#{cover_url}.jpg" end end