- Add NOT NULL constraints to soundtrack.uuid, song.uuid, and song.soundtrack_uuid - Add corresponding DROP NOT NULL in down migration - Update header comments to reflect combined Phase 1 & 2 This eliminates the need for a separate migration 000007 while maintaining proper rollback capability. The NOT NULL constraints are added AFTER all UUID backfills are complete, ensuring data integrity. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
65 lines
2.6 KiB
SQL
65 lines
2.6 KiB
SQL
-- Rollback: Remove UUID columns and revert rename
|
|
|
|
-- Step 1: Drop UUID-related indexes
|
|
DROP INDEX IF EXISTS idx_song_uuid;
|
|
DROP INDEX IF EXISTS idx_song_soundtrack_uuid;
|
|
DROP INDEX IF EXISTS idx_soundtrack_uuid;
|
|
DROP INDEX IF EXISTS idx_song_soundtrack_id;
|
|
DROP INDEX IF EXISTS idx_song_path;
|
|
|
|
-- Step 1.5: Remove NOT NULL constraints before dropping columns (Issue #28 rollback)
|
|
ALTER TABLE song ALTER COLUMN soundtrack_uuid DROP NOT NULL;
|
|
ALTER TABLE song ALTER COLUMN uuid DROP NOT NULL;
|
|
ALTER TABLE soundtrack ALTER COLUMN uuid DROP NOT NULL;
|
|
|
|
-- Step 2: Drop UUID-related constraints
|
|
ALTER TABLE song DROP CONSTRAINT IF EXISTS song_soundtrack_path_unique;
|
|
ALTER TABLE song DROP CONSTRAINT IF EXISTS song_soundtrack_uuid_fkey;
|
|
ALTER TABLE soundtrack DROP CONSTRAINT IF EXISTS soundtrack_uuid_unique;
|
|
|
|
-- Step 3: Drop UUID columns from song table
|
|
ALTER TABLE song DROP COLUMN IF EXISTS soundtrack_uuid;
|
|
ALTER TABLE song DROP COLUMN IF EXISTS uuid;
|
|
|
|
-- Step 4: Drop UUID column from soundtrack table
|
|
ALTER TABLE soundtrack DROP COLUMN IF EXISTS uuid;
|
|
|
|
-- Step 5: Drop the uuid-based primary key
|
|
ALTER TABLE song DROP CONSTRAINT song_pkey;
|
|
|
|
-- Step 6: Restore composite primary key on song
|
|
ALTER TABLE song ADD CONSTRAINT song_pkey PRIMARY KEY (soundtrack_id, path);
|
|
|
|
-- Step 7: Drop foreign key constraint
|
|
ALTER TABLE song DROP CONSTRAINT IF EXISTS song_soundtrack_id_fkey;
|
|
|
|
-- Step 8: Revert rename operations
|
|
-- Revert song_list table references
|
|
ALTER TABLE song_list RENAME COLUMN soundtrack_name TO game_name;
|
|
|
|
-- Revert song table: rename soundtrack_id back to game_id
|
|
ALTER TABLE song RENAME COLUMN soundtrack_id TO game_id;
|
|
|
|
-- Revert columns in game table
|
|
ALTER TABLE game RENAME COLUMN soundtrack_name TO game_name;
|
|
|
|
-- Revert primary key sequence
|
|
ALTER SEQUENCE game_id_seq RENAME TO soundtrack_id_seq;
|
|
|
|
-- Revert: Rename soundtrack table back to game
|
|
ALTER TABLE soundtrack RENAME TO game;
|
|
|
|
-- Revert foreign key constraint
|
|
ALTER TABLE song DROP CONSTRAINT IF EXISTS song_game_id_fkey;
|
|
ALTER TABLE song ADD CONSTRAINT song_game_id_fkey
|
|
FOREIGN KEY (game_id) REFERENCES game(id);
|
|
|
|
-- Revert indexes
|
|
ALTER INDEX IF EXISTS idx_soundtrack_deleted RENAME TO idx_game_deleted;
|
|
ALTER INDEX IF EXISTS idx_soundtrack_hash RENAME TO idx_game_hash;
|
|
ALTER INDEX IF EXISTS idx_soundtrack_path RENAME TO idx_game_path;
|
|
ALTER INDEX IF EXISTS idx_soundtrack_name RENAME TO idx_game_name;
|
|
ALTER INDEX IF EXISTS idx_song_soundtrack_id RENAME TO idx_song_game_id;
|
|
ALTER INDEX IF EXISTS idx_song_soundtrack_id_song_name RENAME TO idx_song_game_id_song_name;
|
|
ALTER INDEX IF EXISTS song_list_soundtrack_name_idx RENAME TO song_list_game_name_idx;
|