Link Character and Weapon tables with granblue_id (#154)
* Add recruits column to weapons * Populate recruits column with granblue_ids * Remove recruits_id and index recruits
This commit is contained in:
parent
386515cd18
commit
0d46cb3833
6 changed files with 50 additions and 4 deletions
30
db/data/20250115094623_populate_weapon_recruits.rb
Normal file
30
db/data/20250115094623_populate_weapon_recruits.rb
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class PopulateWeaponRecruits < ActiveRecord::Migration[7.0]
|
||||||
|
def up
|
||||||
|
# Get all character mappings and convert to hash properly
|
||||||
|
results = execute(<<-SQL)
|
||||||
|
SELECT id, granblue_id
|
||||||
|
FROM characters
|
||||||
|
WHERE granblue_id IS NOT NULL
|
||||||
|
SQL
|
||||||
|
|
||||||
|
character_mapping = {}
|
||||||
|
results.each do |row|
|
||||||
|
character_mapping[row['id']] = row['granblue_id']
|
||||||
|
end
|
||||||
|
|
||||||
|
# Update weapons table using the mapping
|
||||||
|
character_mapping.each do |char_id, granblue_id|
|
||||||
|
execute(<<-SQL)
|
||||||
|
UPDATE weapons
|
||||||
|
SET recruits = #{connection.quote(granblue_id)}
|
||||||
|
WHERE recruits_id = #{connection.quote(char_id)}
|
||||||
|
SQL
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
execute("UPDATE weapons SET recruits = NULL")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -1 +1 @@
|
||||||
DataMigrate::Data.define(version: 20231119051223)
|
DataMigrate::Data.define(version: 20250115094623)
|
||||||
|
|
|
||||||
5
db/migrate/20250115094528_add_recruits_to_weapons.rb
Normal file
5
db/migrate/20250115094528_add_recruits_to_weapons.rb
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddRecruitsToWeapons < ActiveRecord::Migration[7.0]
|
||||||
|
def change
|
||||||
|
add_column :weapons, :recruits, :string
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
class RemoveRecruitsIdFromWeapons < ActiveRecord::Migration[7.0]
|
||||||
|
def change
|
||||||
|
remove_column :weapons, :recruits_id, :uuid
|
||||||
|
remove_index :weapons, :recruits_id if index_exists?(:weapons, :recruits_id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddIndexToWeaponRecruits < ActiveRecord::Migration[7.0]
|
||||||
|
def change
|
||||||
|
add_index :weapons, :recruits
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -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[7.0].define(version: 2025_01_10_070255) do
|
ActiveRecord::Schema[7.0].define(version: 2025_01_15_100356) 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_trgm"
|
enable_extension "pg_trgm"
|
||||||
|
|
@ -456,7 +456,6 @@ ActiveRecord::Schema[7.0].define(version: 2025_01_10_070255) do
|
||||||
t.integer "ax_type"
|
t.integer "ax_type"
|
||||||
t.boolean "limit", default: false, null: false
|
t.boolean "limit", default: false, null: false
|
||||||
t.boolean "ax", default: false, null: false
|
t.boolean "ax", default: false, null: false
|
||||||
t.uuid "recruits_id"
|
|
||||||
t.integer "max_awakening_level"
|
t.integer "max_awakening_level"
|
||||||
t.date "release_date"
|
t.date "release_date"
|
||||||
t.date "flb_date"
|
t.date "flb_date"
|
||||||
|
|
@ -469,8 +468,9 @@ ActiveRecord::Schema[7.0].define(version: 2025_01_10_070255) do
|
||||||
t.string "nicknames_jp", default: [], null: false, array: true
|
t.string "nicknames_jp", default: [], null: false, array: true
|
||||||
t.boolean "transcendence", default: false
|
t.boolean "transcendence", default: false
|
||||||
t.date "transcendence_date"
|
t.date "transcendence_date"
|
||||||
|
t.string "recruits"
|
||||||
t.index ["name_en"], name: "index_weapons_on_name_en", opclass: :gin_trgm_ops, using: :gin
|
t.index ["name_en"], name: "index_weapons_on_name_en", opclass: :gin_trgm_ops, using: :gin
|
||||||
t.index ["recruits_id"], name: "index_weapons_on_recruits_id"
|
t.index ["recruits"], name: "index_weapons_on_recruits"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_foreign_key "favorites", "parties"
|
add_foreign_key "favorites", "parties"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue