From 9a8d5391c5be3612612931e6eca187f6666533a8 Mon Sep 17 00:00:00 2001 From: josedario87 Date: Sat, 22 Nov 2025 04:19:30 -0600 Subject: [PATCH] Mejorar endpoint de seed para soportar recarga completa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El endpoint ahora puede cargar datos de ejemplo en dos escenarios: 1. Cuando se eliminó la estructura completa (DROP): - Detecta que las tablas no existen - Ejecuta el schema completo (01_schema.sql) - Luego carga los datos de ejemplo (02_seed.sql) 2. Cuando solo se eliminaron los datos (TRUNCATE): - Detecta que las tablas existen - Limpia los datos con TRUNCATE CASCADE - Luego carga los datos de ejemplo Esto hace que el botón "CARGAR DATOS DE EJEMPLO" sea más robusto y funcione en cualquier estado de la base de datos. --- nuxt4/server/api/debug/seed-database.post.ts | 35 ++++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/nuxt4/server/api/debug/seed-database.post.ts b/nuxt4/server/api/debug/seed-database.post.ts index 37d699e..f03d925 100644 --- a/nuxt4/server/api/debug/seed-database.post.ts +++ b/nuxt4/server/api/debug/seed-database.post.ts @@ -31,21 +31,44 @@ export default defineEventHandler(async (event) => { await client.query('BEGIN') - // Primero ejecutar schema (crea tablas si no existen) - console.log('📋 Ejecutando schema...') - await client.query(schemaSQL) + // Verificar si las tablas existen + const tablesExist = await client.query(` + SELECT EXISTS ( + SELECT FROM information_schema.tables + WHERE table_schema = 'public' + AND table_name = 'lotes' + ) as exists + `) - // Luego ejecutar seed (inserta datos de ejemplo) - console.log('📋 Ejecutando seed...') + const needsSchema = !tablesExist.rows[0].exists + + if (needsSchema) { + // Si no existen las tablas, ejecutar schema completo + console.log('📋 Las tablas no existen. Creando schema...') + await client.query(schemaSQL) + } else { + console.log('📋 Las tablas ya existen. Limpiando datos existentes...') + // Si las tablas existen, limpiar datos antes de cargar seed + await client.query('TRUNCATE TABLE operacion_lotes CASCADE') + await client.query('TRUNCATE TABLE operaciones CASCADE') + await client.query('TRUNCATE TABLE lotes CASCADE') + } + + // Ejecutar seed (inserta datos de ejemplo) + console.log('📋 Cargando datos de ejemplo...') await client.query(seedSQL) await client.query('COMMIT') console.log('✅ Datos de ejemplo cargados exitosamente') + const message = needsSchema + ? 'Schema creado y datos de ejemplo cargados exitosamente' + : 'Datos existentes limpiados y datos de ejemplo cargados exitosamente' + return { success: true, - message: 'Schema recreado y datos de ejemplo cargados: 10 lotes, 7 operaciones, 16 relaciones', + message, } } catch (error) { await client.query('ROLLBACK')