-- 002_migrate_nodos_ambitos.sql -- Seed de ámbitos iniciales y migración de nodos DO $$ DECLARE id_diiaa INTEGER; id_dasuten INTEGER; id_bitacoras INTEGER; BEGIN -- 1. Insertar ámbitos principales INSERT INTO bitacoras.ambitos (nombre, descripcion, parent_id) VALUES ('dtic-DIIAA', 'Ámbito raíz: Infraestructura y servicios propios', NULL) ON CONFLICT (nombre) DO UPDATE SET descripcion = EXCLUDED.descripcion RETURNING id INTO id_diiaa; INSERT INTO bitacoras.ambitos (nombre, descripcion, parent_id) VALUES ('dtic-DASUTEN', 'Departamento de Servicios UTN (gestionado)', id_diiaa) ON CONFLICT (nombre) DO UPDATE SET descripcion = EXCLUDED.descripcion RETURNING id INTO id_dasuten; INSERT INTO bitacoras.ambitos (nombre, descripcion, parent_id) VALUES ('dtic-BITACORAS', 'Sistema de registro ADN', id_diiaa) ON CONFLICT (nombre) DO UPDATE SET descripcion = EXCLUDED.descripcion RETURNING id INTO id_bitacoras; -- 2. Migrar nodos a dtic-DASUTEN UPDATE bitacoras.nodos SET ambito_id = id_dasuten WHERE nombre IN ('srv-dasu', 'dasu-srvv-dc', 'sql-dasuten', 'dc-dasuten', 'pc-dasu0') OR nombre LIKE 'pcv-dasu%'; -- 3. Migrar nodos a dtic-BITACORAS UPDATE bitacoras.nodos SET ambito_id = id_bitacoras WHERE nombre = 'dtic-BITACORAS' OR nombre = 'dtic-DIIAA'; -- 4. Migrar nodos restantes a dtic-DIIAA (Infraestructura y Servicios) UPDATE bitacoras.nodos SET ambito_id = id_diiaa WHERE ambito_id IS NULL AND ( nombre LIKE 'srv-%' OR nombre LIKE 'srvv-%' OR nombre = 'pc-frlr' OR nombre LIKE 'pc-%' ); -- Nota: Los nodos que no apliquen a ninguna regla quedarán con ambito_id NULL temporalmente -- 5. Propagar ambito_id a las entradas existentes UPDATE bitacoras.entradas e SET ambito_id = n.ambito_id FROM bitacoras.nodos n WHERE e.nodo_id = n.id AND e.ambito_id IS NULL; END $$;