Files
turbovault-app/app/models/igdb_platform_mapping.rb
2026-03-28 19:24:29 -04:00

55 lines
1.4 KiB
Ruby

class IgdbPlatformMapping < ApplicationRecord
# Associations
belongs_to :platform
# Validations
validates :platform_id, presence: true
validates :igdb_platform_id, presence: true, uniqueness: { scope: :platform_id }
# Class methods
def self.igdb_id_for_platform(platform)
find_by(platform: platform)&.igdb_platform_id
end
def self.seed_common_mappings!
mappings = {
"Nintendo 64" => 4,
"PlayStation" => 7,
"PlayStation 2" => 8,
"PlayStation 3" => 9,
"PlayStation 4" => 48,
"PlayStation 5" => 167,
"Xbox" => 11,
"Xbox 360" => 12,
"Xbox One" => 49,
"Xbox Series X/S" => 169,
"Nintendo Switch" => 130,
"Wii" => 5,
"Wii U" => 41,
"GameCube" => 21,
"Super Nintendo Entertainment System" => 19,
"Nintendo Entertainment System" => 18,
"Game Boy" => 33,
"Game Boy Color" => 22,
"Game Boy Advance" => 24,
"Nintendo DS" => 20,
"Nintendo 3DS" => 37,
"PC" => 6,
"Sega Genesis" => 29,
"Sega Dreamcast" => 23,
"PlayStation Portable" => 38,
"PlayStation Vita" => 46
}
mappings.each do |platform_name, igdb_id|
platform = Platform.find_by(name: platform_name)
next unless platform
find_or_create_by!(platform: platform) do |mapping|
mapping.igdb_platform_id = igdb_id
mapping.igdb_platform_name = platform_name
end
end
end
end