add game_name columns for artifact skill matching

separate game names (used for import matching) from display names
This commit is contained in:
Justin Edmund 2025-12-18 22:48:08 -08:00
parent 3390eaf755
commit db2aa43d81
4 changed files with 25 additions and 10 deletions

View file

@ -28,12 +28,15 @@ class ArtifactSkill < ApplicationRecord
@cached_skills ||= all.index_by { |s| [s.skill_group, s.modifier] } @cached_skills ||= all.index_by { |s| [s.skill_group, s.modifier] }
end end
def cached_by_name def cached_by_game_name
@name_cache ||= begin @game_name_cache ||= begin
cache = {} cache = {}
all.each do |skill| all.each do |skill|
cache[skill.name_en] = skill # Use game names for matching, fall back to display names if not set
cache[skill.name_jp] = skill en_key = skill.game_name_en.presence || skill.name_en
jp_key = skill.game_name_jp.presence || skill.name_jp
cache[en_key] = skill
cache[jp_key] = skill
end end
cache cache
end end
@ -50,13 +53,13 @@ class ArtifactSkill < ApplicationRecord
cached_skills[[group_key, modifier]] cached_skills[[group_key, modifier]]
end end
def find_by_name(name) def find_by_game_name(name)
cached_by_name[name] cached_by_game_name[name]
end end
def clear_cache! def clear_cache!
@cached_skills = nil @cached_skills = nil
@name_cache = nil @game_name_cache = nil
end end
end end

View file

@ -183,8 +183,8 @@ class ArtifactImportService
quality = info['skill_quality'] || info['level'] || 1 quality = info['skill_quality'] || info['level'] || 1
level = info['level'] || 1 level = info['level'] || 1
# Look up skill by name (supports both EN and JP) # Look up skill by game name (supports both EN and JP)
skill = ArtifactSkill.find_by_name(name) skill = ArtifactSkill.find_by_game_name(name)
return {} unless skill return {} unless skill
{ {

View file

@ -0,0 +1,8 @@
class AddGameNamesToArtifactSkills < ActiveRecord::Migration[8.0]
def change
add_column :artifact_skills, :game_name_en, :string
add_column :artifact_skills, :game_name_jp, :string
add_index :artifact_skills, :game_name_en
add_index :artifact_skills, :game_name_jp
end
end

View file

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[8.0].define(version: 2025_12_19_062316) do ActiveRecord::Schema[8.0].define(version: 2025_12_19_064037) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "btree_gin" enable_extension "btree_gin"
enable_extension "pg_catalog.plpgsql" enable_extension "pg_catalog.plpgsql"
@ -33,6 +33,10 @@ ActiveRecord::Schema[8.0].define(version: 2025_12_19_062316) do
t.string "suffix_en", default: "" t.string "suffix_en", default: ""
t.string "suffix_jp", default: "" t.string "suffix_jp", default: ""
t.string "polarity", default: "positive", null: false t.string "polarity", default: "positive", null: false
t.string "game_name_en"
t.string "game_name_jp"
t.index ["game_name_en"], name: "index_artifact_skills_on_game_name_en"
t.index ["game_name_jp"], name: "index_artifact_skills_on_game_name_jp"
t.index ["skill_group", "modifier"], name: "index_artifact_skills_on_skill_group_and_modifier", unique: true t.index ["skill_group", "modifier"], name: "index_artifact_skills_on_skill_group_and_modifier", unique: true
t.index ["skill_group"], name: "index_artifact_skills_on_skill_group" t.index ["skill_group"], name: "index_artifact_skills_on_skill_group"
end end