-- Migration: Ajout de colonnes UUID aux tables manquantes -- Création: 2025-01-27 -- Version: 1.0.0 -- Description: Ajoute des colonnes UUID aux tables conversation_members, audit_logs et security_events -- pour permettre la migration du code Rust de i64 vers Uuid -- ================================================================ -- TABLE conversation_members -- ================================================================ -- Ajouter la colonne uuid (cette table n'a pas de colonne id, seulement une PK composite) ALTER TABLE conversation_members ADD COLUMN IF NOT EXISTS uuid UUID DEFAULT gen_random_uuid(); -- Ajouter la contrainte UNIQUE ALTER TABLE conversation_members ADD CONSTRAINT IF NOT EXISTS conversation_members_uuid_unique UNIQUE (uuid); -- Ajouter la contrainte NOT NULL (après le backfill par default) -- Note: Les valeurs existantes ont déjà été remplies par DEFAULT, donc on peut ajouter NOT NULL ALTER TABLE conversation_members ALTER COLUMN uuid SET NOT NULL; -- Index pour performance CREATE INDEX IF NOT EXISTS idx_conversation_members_uuid ON conversation_members(uuid); -- ================================================================ -- TABLE audit_logs -- ================================================================ -- Ajouter la colonne uuid (cette table a déjà un id SERIAL) ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS uuid UUID DEFAULT gen_random_uuid(); -- Ajouter la contrainte UNIQUE ALTER TABLE audit_logs ADD CONSTRAINT IF NOT EXISTS audit_logs_uuid_unique UNIQUE (uuid); -- Ajouter la contrainte NOT NULL (après le backfill par default) ALTER TABLE audit_logs ALTER COLUMN uuid SET NOT NULL; -- Index pour performance CREATE INDEX IF NOT EXISTS idx_audit_logs_uuid ON audit_logs(uuid); -- ================================================================ -- TABLE security_events (si elle existe) -- ================================================================ -- Note: security_events peut ne pas exister dans tous les environnements -- On utilise DO $$ pour éviter les erreurs si la table n'existe pas DO $$ BEGIN -- Vérifier si la table existe avant d'ajouter la colonne IF EXISTS ( SELECT FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'security_events' ) THEN -- Ajouter la colonne uuid ALTER TABLE security_events ADD COLUMN IF NOT EXISTS uuid UUID DEFAULT gen_random_uuid(); -- Ajouter la contrainte UNIQUE ALTER TABLE security_events ADD CONSTRAINT IF NOT EXISTS security_events_uuid_unique UNIQUE (uuid); -- Ajouter la contrainte NOT NULL (après le backfill par default) ALTER TABLE security_events ALTER COLUMN uuid SET NOT NULL; -- Index pour performance CREATE INDEX IF NOT EXISTS idx_security_events_uuid ON security_events(uuid); END IF; END $$; -- ================================================================ -- COMMENTAIRES -- ================================================================ COMMENT ON COLUMN conversation_members.uuid IS 'UUID unique pour chaque membre de conversation (pour migration i64 -> UUID)'; COMMENT ON COLUMN audit_logs.uuid IS 'UUID unique pour chaque log d''audit (pour migration i64 -> UUID)'; COMMENT ON COLUMN security_events.uuid IS 'UUID unique pour chaque événement de sécurité (pour migration i64 -> UUID)';