diff --git a/db/migrate/20251215173625_remap_character_season_values.rb b/db/migrate/20251215173625_remap_character_season_values.rb new file mode 100644 index 0000000..a6fcd04 --- /dev/null +++ b/db/migrate/20251215173625_remap_character_season_values.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +# Remap character season values after removing "Standard" season. +# Old values: Standard=1, Valentine=2, Formal=3, Summer=4, Halloween=5, Holiday=6 +# New values: Valentine=1, Formal=2, Summer=3, Halloween=4, Holiday=5 +# +# Uses negative temporary values to avoid conflicts during remapping. +class RemapCharacterSeasonValues < ActiveRecord::Migration[8.0] + def up + # First, remap all values to negative temporaries to avoid conflicts + execute "UPDATE characters SET season = -2 WHERE season = 2" # Valentine -> temp + execute "UPDATE characters SET season = -3 WHERE season = 3" # Formal -> temp + execute "UPDATE characters SET season = -4 WHERE season = 4" # Summer -> temp + execute "UPDATE characters SET season = -5 WHERE season = 5" # Halloween -> temp + execute "UPDATE characters SET season = -6 WHERE season = 6" # Holiday -> temp + + # Remove Standard (1 -> NULL) + execute "UPDATE characters SET season = NULL WHERE season = 1" + + # Now remap from temporaries to final values + execute "UPDATE characters SET season = 1 WHERE season = -2" # Valentine: 2 -> 1 + execute "UPDATE characters SET season = 2 WHERE season = -3" # Formal: 3 -> 2 + execute "UPDATE characters SET season = 3 WHERE season = -4" # Summer: 4 -> 3 + execute "UPDATE characters SET season = 4 WHERE season = -5" # Halloween: 5 -> 4 + execute "UPDATE characters SET season = 5 WHERE season = -6" # Holiday: 6 -> 5 + end + + def down + # Remap back to original values using negative temporaries + execute "UPDATE characters SET season = -1 WHERE season = 1" # Valentine -> temp + execute "UPDATE characters SET season = -2 WHERE season = 2" # Formal -> temp + execute "UPDATE characters SET season = -3 WHERE season = 3" # Summer -> temp + execute "UPDATE characters SET season = -4 WHERE season = 4" # Halloween -> temp + execute "UPDATE characters SET season = -5 WHERE season = 5" # Holiday -> temp + + # Remap to original values (Standard cannot be restored from NULL) + execute "UPDATE characters SET season = 2 WHERE season = -1" # Valentine: 1 -> 2 + execute "UPDATE characters SET season = 3 WHERE season = -2" # Formal: 2 -> 3 + execute "UPDATE characters SET season = 4 WHERE season = -3" # Summer: 3 -> 4 + execute "UPDATE characters SET season = 5 WHERE season = -4" # Halloween: 4 -> 5 + execute "UPDATE characters SET season = 6 WHERE season = -5" # Holiday: 5 -> 6 + end +end diff --git a/db/schema.rb b/db/schema.rb index dcee9c3..cf321d7 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_14_104721) do +ActiveRecord::Schema[8.0].define(version: 2025_12_15_173625) do # These are extensions that must be enabled in order to support this database enable_extension "btree_gin" enable_extension "pg_catalog.plpgsql"