@deinossrl/dgp-agent 1.5.27 → 1.5.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.mjs +39 -3
  2. package/package.json +1 -1
package/index.mjs CHANGED
@@ -2402,6 +2402,7 @@ async function executePgRestore(command) {
2402
2402
  // Pero requiere query previo.
2403
2403
 
2404
2404
  // SI EL USUARIO NO ES OWNER, NO PUEDE BORRAR EL SCHEMA.
2405
+ const projectRef = target_environment.supabase_project_ref;
2405
2406
  // PERO SÍ PUEDE BORRAR LAS TABLAS SI ES OWNER DE LAS TABLAS.
2406
2407
 
2407
2408
  // Vamos a inyectar un comando SQL que haga el Loop de borrado de tablas.
@@ -2412,17 +2413,52 @@ async function executePgRestore(command) {
2412
2413
  DECLARE
2413
2414
  r RECORD;
2414
2415
  BEGIN
2415
- -- Borrar tablas (y sus datos) es lo crítico para evitar duplicados
2416
+ -- 0. KILL CONNECTIONS (Critical to avoid locking issues causing "failing cascade")
2417
+ -- Intentamos terminar conexiones que no sean la nuestra
2418
+ BEGIN
2419
+ PERFORM pg_terminate_backend(pid)
2420
+ FROM pg_stat_activity
2421
+ WHERE datname = current_database()
2422
+ AND pid <> pg_backend_pid()
2423
+ AND leader_pid IS NULL; -- Solo sesiones principales
2424
+ EXCEPTION WHEN OTHERS THEN
2425
+ RAISE NOTICE 'No se pudieron terminar conexiones (posiblemente falta permisos), continuando...';
2426
+ END;
2427
+
2428
+ -- 1. Drop Materialized Views (Often missed)
2429
+ FOR r IN (SELECT matviewname FROM pg_matviews WHERE schemaname = '${schema}') LOOP
2430
+ EXECUTE 'DROP MATERIALIZED VIEW IF EXISTS "' || '${schema}' || '"."' || r.matviewname || '" CASCADE';
2431
+ END LOOP;
2432
+
2433
+ -- 2. Drop Views
2434
+ FOR r IN (SELECT table_name FROM information_schema.views WHERE table_schema = '${schema}') LOOP
2435
+ EXECUTE 'DROP VIEW IF EXISTS "' || '${schema}' || '"."' || r.table_name || '" CASCADE';
2436
+ END LOOP;
2437
+
2438
+ -- 3. Drop Tables (The Meat)
2416
2439
  FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = '${schema}') LOOP
2417
2440
  EXECUTE 'DROP TABLE IF EXISTS "' || '${schema}' || '"."' || r.tablename || '" CASCADE';
2418
2441
  END LOOP;
2442
+
2443
+ -- 4. Drop Types (Enums/Composites)
2444
+ -- Limpiar tipos propios del schema para evitar conflictos de "type already exists"
2445
+ FOR r IN (
2446
+ SELECT t.typname
2447
+ FROM pg_type t
2448
+ JOIN pg_namespace n ON t.typnamespace = n.oid
2449
+ WHERE n.nspname = '${schema}'
2450
+ AND t.typtype IN ('e', 'c') -- Enum, Composite
2451
+ ) LOOP
2452
+ EXECUTE 'DROP TYPE IF EXISTS "' || '${schema}' || '"."' || r.typname || '" CASCADE';
2453
+ END LOOP;
2419
2454
 
2420
- -- Intentar borrar schema si es posible (limpieza total), si falla no importa porque ya borramos las tablas
2455
+ -- 5. Final Schema Attempt
2456
+ -- Intentar borrar schema si es posible (limpieza total)
2421
2457
  BEGIN
2422
2458
  EXECUTE 'DROP SCHEMA IF EXISTS "' || '${schema}' || '" CASCADE';
2423
2459
  EXECUTE 'CREATE SCHEMA IF NOT EXISTS "' || '${schema}' || '"';
2424
2460
  EXCEPTION WHEN OTHERS THEN
2425
- RAISE NOTICE 'No se pudo recrear schema %, pero las tablas fueron borradas.', '${schema}';
2461
+ RAISE NOTICE 'Schema % preservado (contenido borrado).', '${schema}';
2426
2462
  END;
2427
2463
  END $$;
2428
2464
  `;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deinossrl/dgp-agent",
3
- "version": "1.5.27",
3
+ "version": "1.5.28",
4
4
  "description": "Agente local para Despliegue-GPT - Reporta el estado del repositorio Git a la plataforma TenMinute IA",
5
5
  "main": "index.mjs",
6
6
  "bin": {