85 lines
3.4 KiB
MySQL
85 lines
3.4 KiB
MySQL
|
|
-- 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)';
|
||
|
|
|