All checks were successful
Deploy production / deploy (push) Successful in 1m16s
47 lines
6.1 KiB
SQL
47 lines
6.1 KiB
SQL
-- Hand-written data migration: split the single Call of Duty (bo2) and Pokémon rows into one
|
||
-- row per Call of Duty title and one per Pokémon generation (remakes and spin-offs separate).
|
||
-- Neither old row had notes or ranks; bo2's status (active) and aliases move to black-ops-2.
|
||
-- Deep-tracker data (ref.tracker_games / ref.pokemon_games ids) is untouched.
|
||
INSERT INTO games.library (slug, name, short_name, kind, status, platform, tracker_href, aliases, sort_order) VALUES
|
||
('black-ops-2', 'Call of Duty: Black Ops 2', 'Black Ops 2', 'video', 'active', NULL, '/projects/game-tracker/call-of-duty/black-ops-2', '{"Call of Duty","Black Ops II","Black Ops 2","BO2"}', 60),
|
||
('black-ops', 'Call of Duty: Black Ops', 'Black Ops', 'video', 'unknown', NULL, '/projects/game-tracker/call-of-duty/black-ops', '{"Call of Duty","Black Ops 1"}', 61),
|
||
('ghosts', 'Call of Duty: Ghosts', 'Ghosts', 'video', 'unknown', NULL, '/projects/game-tracker/call-of-duty/ghosts', '{"Call of Duty"}', 62),
|
||
('advanced-warfare', 'Call of Duty: Advanced Warfare', 'Advanced Warfare', 'video', 'unknown', NULL, '/projects/game-tracker/call-of-duty/advanced-warfare', '{"Call of Duty"}', 63),
|
||
('black-ops-3', 'Call of Duty: Black Ops 3', 'Black Ops 3', 'video', 'unknown', NULL, '/projects/game-tracker/call-of-duty/black-ops-3', '{"Call of Duty","Black Ops III","Black Ops 3"}', 64),
|
||
('infinite-warfare', 'Call of Duty: Infinite Warfare', 'Infinite Warfare', 'video', 'unknown', NULL, '/projects/game-tracker/call-of-duty/infinite-warfare', '{"Call of Duty"}', 65),
|
||
('wwii', 'Call of Duty: WWII', 'WWII', 'video', 'unknown', NULL, '/projects/game-tracker/call-of-duty/wwii', '{"Call of Duty","World War II"}', 66),
|
||
('pokemon-red-blue-yellow', 'Pokémon Red, Blue & Yellow', 'Red, Blue & Yellow', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=yellow', '{"Pokémon Red","Pokémon Blue","Pokémon Yellow"}', 200),
|
||
('pokemon-gold-silver-crystal', 'Pokémon Gold, Silver & Crystal', 'Gold, Silver & Crystal', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=crystal', '{"Pokémon Gold","Pokémon Silver","Pokémon Crystal"}', 201),
|
||
('pokemon-ruby-sapphire-emerald', 'Pokémon Ruby, Sapphire & Emerald', 'Ruby, Sapphire & Emerald', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=emerald', '{"Pokémon Ruby","Pokémon Sapphire","Pokémon Emerald"}', 202),
|
||
('pokemon-colosseum', 'Pokémon Colosseum', 'Colosseum', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=colosseum', '{}', 203),
|
||
('pokemon-xd', 'Pokémon XD: Gale of Darkness', 'XD: Gale of Darkness', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=xd', '{"Pokémon XD"}', 204),
|
||
('pokemon-firered-leafgreen', 'Pokémon FireRed & LeafGreen', 'FireRed & LeafGreen', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=firered', '{"Pokémon FireRed","Pokémon LeafGreen"}', 205),
|
||
('pokemon-diamond-pearl-platinum', 'Pokémon Diamond, Pearl & Platinum', 'Diamond, Pearl & Platinum', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=platinum', '{"Pokémon Diamond","Pokémon Pearl","Pokémon Platinum"}', 206),
|
||
('pokemon-heartgold-soulsilver', 'Pokémon HeartGold & SoulSilver', 'HeartGold & SoulSilver', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=soulsilver', '{"Pokémon HeartGold","Pokémon SoulSilver"}', 207),
|
||
('pokemon-black-white', 'Pokémon Black, White, Black 2 & White 2', 'Black & White', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=black', '{"Pokémon Black","Pokémon White","Pokémon Black 2","Pokémon White 2"}', 208),
|
||
('pokemon-x-y', 'Pokémon X & Y', 'X & Y', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=y', '{"Pokémon X","Pokémon Y"}', 209),
|
||
('pokemon-omega-ruby-alpha-sapphire', 'Pokémon Omega Ruby & Alpha Sapphire', 'Omega Ruby & Alpha Sapphire', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=omega-ruby', '{"Pokémon Omega Ruby","Pokémon Alpha Sapphire"}', 210),
|
||
('pokemon-sun-moon', 'Pokémon Sun, Moon, Ultra Sun & Ultra Moon', 'Sun & Moon', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=moon', '{"Pokémon Sun","Pokémon Moon","Pokémon Ultra Sun","Pokémon Ultra Moon"}', 211),
|
||
('pokemon-lets-go', 'Pokémon Let’s Go, Pikachu! & Let’s Go, Eevee!', 'Let’s Go', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=lets-go-eevee', '{"Pokémon Let’s Go, Pikachu!","Pokémon Let’s Go, Eevee!"}', 212),
|
||
('pokemon-sword-shield', 'Pokémon Sword & Shield', 'Sword & Shield', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=sword', '{"Pokémon Sword","Pokémon Shield"}', 213),
|
||
('pokemon-brilliant-diamond-shining-pearl', 'Pokémon Brilliant Diamond & Shining Pearl', 'Brilliant Diamond & Shining Pearl', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=brilliant-diamond', '{"Pokémon Brilliant Diamond","Pokémon Shining Pearl"}', 214),
|
||
('pokemon-legends-arceus', 'Pokémon Legends: Arceus', 'Legends: Arceus', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=legends-arceus', '{}', 215),
|
||
('pokemon-scarlet-violet', 'Pokémon Scarlet & Violet', 'Scarlet & Violet', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=scarlet', '{"Pokémon Scarlet","Pokémon Violet"}', 216),
|
||
('pokemon-legends-z-a', 'Pokémon Legends: Z-A', 'Legends: Z-A', 'video', 'unknown', NULL, '/projects/game-tracker/pokemon?game=legends-za', '{}', 217)
|
||
ON CONFLICT (slug) DO NOTHING;--> statement-breakpoint
|
||
UPDATE games.library n SET
|
||
status = o.status,
|
||
platform = COALESCE(n.platform, o.platform),
|
||
current_rank = COALESCE(n.current_rank, o.current_rank),
|
||
peak_rank = COALESCE(n.peak_rank, o.peak_rank),
|
||
rank_label = COALESCE(n.rank_label, o.rank_label),
|
||
notes = COALESCE(n.notes, o.notes),
|
||
aliases = ARRAY(SELECT DISTINCT unnest(n.aliases || o.aliases))
|
||
FROM games.library o
|
||
WHERE o.slug = 'bo2' AND n.slug = 'black-ops-2';--> statement-breakpoint
|
||
UPDATE games.library n SET
|
||
notes = COALESCE(n.notes, o.notes)
|
||
FROM games.library o
|
||
WHERE o.slug = 'pokemon' AND n.slug = 'pokemon-diamond-pearl-platinum' AND o.notes IS NOT NULL;--> statement-breakpoint
|
||
DELETE FROM games.library WHERE slug IN ('bo2', 'pokemon');
|