Files
turbovault-app/app/models/igdb_game.rb
2026-03-29 02:37:49 -04:00

31 lines
812 B
Ruby

# 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