53 lines
2.8 KiB
SQL
53 lines
2.8 KiB
SQL
-- Migration: Finaliser la transition UUID pour les tables secondaires
|
|
-- Date: 2024-12-04
|
|
-- Description: Finalise le travail de migrations/001_migrate_ids_to_uuid_up.sql
|
|
-- Pour chaque table ayant une colonne 'new_id' (UUID) et une ancienne 'id' (INT/BIGINT),
|
|
-- on supprime l'ancienne et on promeut la nouvelle en Primary Key.
|
|
|
|
-- Liste des tables concernées:
|
|
-- hls_transcode_queue, bitrate_adaptation_logs, contests, contest_entries, contest_judges,
|
|
-- contest_votes, contest_sponsors, contest_stems, contest_analytics, contest_badges,
|
|
-- federated_identities, equipment, hardware_sales, equipment_trades, hardware_offers,
|
|
-- mfa_configs, playback_analytics, recovery_codes, refresh_tokens, roles, permissions,
|
|
-- user_roles, royalty_records, royalty_payouts, royalty_rates, creator_royalty_rates,
|
|
-- royalty_config, sellable_contents, jury_members, track_history, track_versions,
|
|
-- user_settings, user_profiles
|
|
|
|
DO $$
|
|
DECLARE
|
|
tables text[] := ARRAY[
|
|
'hls_transcode_queue', 'bitrate_adaptation_logs', 'contests', 'contest_entries',
|
|
'contest_judges', 'contest_votes', 'contest_sponsors', 'contest_stems',
|
|
'contest_analytics', 'contest_badges', 'federated_identities', 'equipment',
|
|
'hardware_sales', 'equipment_trades', 'hardware_offers', 'mfa_configs',
|
|
'playback_analytics', 'recovery_codes', 'refresh_tokens', 'roles', 'permissions',
|
|
'user_roles', 'royalty_records', 'royalty_payouts', 'royalty_rates',
|
|
'creator_royalty_rates', 'royalty_config', 'sellable_contents', 'jury_members',
|
|
'track_history', 'track_versions', 'user_settings', 'user_profiles'
|
|
];
|
|
t text;
|
|
BEGIN
|
|
FOREACH t IN ARRAY tables LOOP
|
|
-- Vérifier si la table existe et a la colonne new_id
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = t AND column_name = 'new_id') THEN
|
|
|
|
-- 1. Supprimer l'ancienne contrainte de clé primaire (si elle existe)
|
|
-- On cherche le nom de la contrainte PK
|
|
EXECUTE 'ALTER TABLE ' || quote_ident(t) || ' DROP CONSTRAINT IF EXISTS ' || quote_ident(t || '_pkey') || ' CASCADE';
|
|
|
|
-- 2. Supprimer l'ancienne colonne ID
|
|
EXECUTE 'ALTER TABLE ' || quote_ident(t) || ' DROP COLUMN IF EXISTS id CASCADE';
|
|
|
|
-- 3. Renommer new_id en id
|
|
EXECUTE 'ALTER TABLE ' || quote_ident(t) || ' RENAME COLUMN new_id TO id';
|
|
|
|
-- 4. Mettre id en NOT NULL (devrait déjà l'être via default, mais sécurité)
|
|
EXECUTE 'ALTER TABLE ' || quote_ident(t) || ' ALTER COLUMN id SET NOT NULL';
|
|
|
|
-- 5. Ajouter la nouvelle clé primaire
|
|
EXECUTE 'ALTER TABLE ' || quote_ident(t) || ' ADD PRIMARY KEY (id)';
|
|
|
|
RAISE NOTICE 'Table % migrée avec succès vers UUID', t;
|
|
END IF;
|
|
END LOOP;
|
|
END $$;
|