-- Fix : la FK servers.cluster_id pointait sur une ancienne table `clusters`,
-- pas sur la nouvelle `server_clusters` créée par migrate_teams_pct_workflow.sql.
-- Conséquence : l'UPDATE final pour rattacher les serveurs Sextan a échoué.
-- Cette migration redirige la FK vers `server_clusters` puis rejoue l'UPDATE.
-- Idempotent.

-- 1) Drop l'ancienne FK (peu importe son nom exact, on la cherche)
DO $$
DECLARE
    fk_name text;
BEGIN
    SELECT conname INTO fk_name
      FROM pg_constraint
     WHERE conrelid = 'public.servers'::regclass
       AND contype = 'f'
       AND pg_get_constraintdef(oid) ILIKE '%cluster_id%';
    IF fk_name IS NOT NULL THEN
        EXECUTE format('ALTER TABLE public.servers DROP CONSTRAINT %I', fk_name);
        RAISE NOTICE 'FK % droppée', fk_name;
    END IF;
END $$;

-- 2) Recrée la FK vers server_clusters
ALTER TABLE public.servers
    ADD CONSTRAINT servers_cluster_id_fkey
    FOREIGN KEY (cluster_id) REFERENCES public.server_clusters(id) ON DELETE SET NULL;

-- 3) Rejoue le rattachement des serveurs Sextan
UPDATE public.servers s
   SET cluster_id = (SELECT id FROM server_clusters WHERE name='Sextan')
 WHERE LOWER(s.hostname::text) IN (
    'vdameasxt1','vdameasxt2','vdameasxt3','vdameasxt4',
    'vrameahtp1','vrameahtp2',
    'vrameasxt1','vrameasxt2','vrameasxt3','vrameasxt4'
 );

-- 4) Vérification (optionnel)
-- SELECT s.hostname, sc.name AS cluster, sc.reboot_delay_min_minutes
--   FROM servers s LEFT JOIN server_clusters sc ON sc.id = s.cluster_id
--  WHERE LOWER(s.hostname::text) LIKE '%sxt%' OR LOWER(s.hostname::text) LIKE '%htp%'
--  ORDER BY s.hostname;
