Files
website/drizzle/20261025190000_games_split_cod_pokemon/migration.sql

47 lines
6.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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');