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')
|
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')
|
||||||
|
|||||||
Reference in New Issue
Block a user