Mejorar endpoint de seed para soportar recarga completa
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m6s
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:
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user