hensei-api/db/data/20251203183632_migrate_weapon_key_series.rb

83 lines
1.9 KiB
Ruby

# frozen_string_literal: true
class MigrateWeaponKeySeries < ActiveRecord::Migration[8.0]
# Mapping from legacy series integer (WeaponKey.series array values) to WeaponSeries slug
LEGACY_TO_SLUG = {
1 => 'seraphic',
2 => 'grand',
3 => 'dark-opus',
4 => 'revenant',
5 => 'primal',
6 => 'beast',
7 => 'regalia',
8 => 'omega',
9 => 'olden-primal',
10 => 'hollowsky',
11 => 'xeno',
12 => 'rose',
13 => 'ultima',
14 => 'bahamut',
15 => 'epic',
16 => 'cosmos',
17 => 'superlative',
18 => 'vintage',
19 => 'class-champion',
20 => 'replica',
21 => 'relic',
22 => 'rusted',
23 => 'sephira',
24 => 'vyrmament',
26 => 'astral',
27 => 'draconic',
28 => 'eternal-splendor',
29 => 'ancestral',
30 => 'new-world-foundation',
31 => 'ennead',
32 => 'militis',
33 => 'malice',
34 => 'menace',
35 => 'illustrious',
36 => 'proven',
37 => 'revans',
38 => 'world',
39 => 'exo',
40 => 'draconic-providence',
41 => 'celestial',
42 => 'omega-rebirth',
43 => 'collab',
98 => 'event',
99 => 'gacha'
}.freeze
def up
# Build lookup from slug to UUID
slug_to_uuid = WeaponSeries.pluck(:slug, :id).to_h
puts "Migrating weapon_key series to weapon_key_series join table..."
key_count = 0
WeaponKey.find_each do |weapon_key|
next if weapon_key.series.blank?
weapon_key.series.each do |legacy_series_id|
slug = LEGACY_TO_SLUG[legacy_series_id.to_i]
next unless slug
weapon_series_id = slug_to_uuid[slug]
next unless weapon_series_id
WeaponKeySeries.find_or_create_by!(
weapon_key_id: weapon_key.id,
weapon_series_id: weapon_series_id
)
key_count += 1
end
end
puts " Created #{key_count} weapon_key_series associations"
end
def down
WeaponKeySeries.delete_all
end
end