Files
MusicServer/internal/db/migrations/000005_rename_and_add_uuids.down.sql
T
Sansan e86c0f8e04 Combine Issue #28 (UUID Phase 2 - NOT NULL) into migration 000005
- 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>
2026-07-28 14:16:04 +02:00

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;