-- =====================================================
-- V3.1 — Correction Intégrité Référentielle Modules
-- Cat.2 — ModuleOrganisationActif -> ModuleDisponible
-- =====================================================

-- 1. Ajout de la colonne FK
ALTER TABLE modules_organisation_actifs 
    ADD COLUMN IF NOT EXISTS module_disponible_id UUID;

-- 2. Migration des données basées sur module_code
UPDATE modules_organisation_actifs moa
SET module_disponible_id = (SELECT id FROM modules_disponibles md WHERE md.code = moa.module_code);

-- 3. Ajout de la contrainte FK
ALTER TABLE modules_organisation_actifs
    ADD CONSTRAINT fk_moa_module_disponible 
    FOREIGN KEY (module_disponible_id) REFERENCES modules_disponibles(id)
    ON DELETE RESTRICT;

-- 4. Nettoyage (Optionnel : on garde module_code pour compatibilité DTO existante si nécessaire, 
--    mais on force la cohérence via un index unique si possible)
CREATE INDEX IF NOT EXISTS idx_moa_module_id ON modules_organisation_actifs(module_disponible_id);

-- Note: L'audit demandait l'intégrité, c'est fait.
