diff --git a/app/models/artifact_skill.rb b/app/models/artifact_skill.rb index 9997690..0c8a9af 100644 --- a/app/models/artifact_skill.rb +++ b/app/models/artifact_skill.rb @@ -28,12 +28,15 @@ class ArtifactSkill < ApplicationRecord @cached_skills ||= all.index_by { |s| [s.skill_group, s.modifier] } end - def cached_by_name - @name_cache ||= begin + def cached_by_game_name + @game_name_cache ||= begin cache = {} all.each do |skill| - cache[skill.name_en] = skill - cache[skill.name_jp] = skill + # Use game names for matching, fall back to display names if not set + 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 cache end @@ -50,13 +53,13 @@ class ArtifactSkill < ApplicationRecord cached_skills[[group_key, modifier]] end - def find_by_name(name) - cached_by_name[name] + def find_by_game_name(name) + cached_by_game_name[name] end def clear_cache! @cached_skills = nil - @name_cache = nil + @game_name_cache = nil end end diff --git a/app/services/artifact_import_service.rb b/app/services/artifact_import_service.rb index c8e6e7d..594151a 100644 --- a/app/services/artifact_import_service.rb +++ b/app/services/artifact_import_service.rb @@ -183,8 +183,8 @@ class ArtifactImportService quality = info['skill_quality'] || info['level'] || 1 level = info['level'] || 1 - # Look up skill by name (supports both EN and JP) - skill = ArtifactSkill.find_by_name(name) + # Look up skill by game name (supports both EN and JP) + skill = ArtifactSkill.find_by_game_name(name) return {} unless skill { diff --git a/db/migrate/20251219064037_add_game_names_to_artifact_skills.rb b/db/migrate/20251219064037_add_game_names_to_artifact_skills.rb new file mode 100644 index 0000000..a7f16ab --- /dev/null +++ b/db/migrate/20251219064037_add_game_names_to_artifact_skills.rb @@ -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 diff --git a/db/schema.rb b/db/schema.rb index b59ea41..27ba140 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # 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 enable_extension "btree_gin" 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_jp", default: "" 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"], name: "index_artifact_skills_on_skill_group" end