Mejorar endpoint de seed para soportar recarga completa
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m6s

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.
This commit is contained in:
2025-11-22 04:19:30 -06:00
parent 4b28e66138
commit 9a8d5391c5

View File

@@ -31,21 +31,44 @@ export default defineEventHandler(async (event) => {
await client.query('BEGIN') await client.query('BEGIN')
// Primero ejecutar schema (crea tablas si no existen) // Verificar si las tablas existen
console.log('📋 Ejecutando schema...') const tablesExist = await client.query(`
await client.query(schemaSQL) SELECT EXISTS (
SELECT FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name = 'lotes'
) as exists
`)
// Luego ejecutar seed (inserta datos de ejemplo) const needsSchema = !tablesExist.rows[0].exists
console.log('📋 Ejecutando seed...')
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(seedSQL)
await client.query('COMMIT') await client.query('COMMIT')
console.log('✅ Datos de ejemplo cargados exitosamente') 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 { return {
success: true, success: true,
message: 'Schema recreado y datos de ejemplo cargados: 10 lotes, 7 operaciones, 16 relaciones', message,
} }
} catch (error) { } catch (error) {
await client.query('ROLLBACK') await client.query('ROLLBACK')