/**
 * ⚠️ ⚠️ ⚠️ ENDPOINT DE DEBUG - TEMPORAL ⚠️ ⚠️ ⚠️
 *
 * POST /api/debug/reset-database
 *
 * BORRA COMPLETAMENTE TODOS LOS DATOS DE LA BASE DE DATOS
 *
 * ⚠️ NO ELIMINAR SIN CONSULTAR A DARIO/DRAGANEL/NUCLEO000 ⚠️
 *
 * Este endpoint fue creado para desarrollo y debugging.
 * Antes de eliminarlo, preguntar si todavía es necesario.
 */

import { query, getClient } from '../../utils/db'

export default defineEventHandler(async (event) => {
  try {
    console.log('⚠️ RESET DATABASE - Borrando todos los datos...')

    const client = await getClient()

    try {
      await client.query('BEGIN')

      // Eliminar completamente las tablas (DROP) para que el workflow las recree
      await client.query('DROP TABLE IF EXISTS operacion_lotes CASCADE')
      await client.query('DROP TABLE IF EXISTS operaciones CASCADE')
      await client.query('DROP TABLE IF EXISTS lotes CASCADE')

      // También eliminar la función y vista si existen
      await client.query('DROP FUNCTION IF EXISTS get_trazabilidad CASCADE')
      await client.query('DROP VIEW IF EXISTS vista_lotes_con_origen CASCADE')

      await client.query('COMMIT')

      console.log('✅ Base de datos reseteada exitosamente (tablas eliminadas)')

      return {
        success: true,
        message: 'Base de datos reseteada. Tablas eliminadas completamente. El próximo deploy las recreará con datos de ejemplo.',
      }
    } catch (error) {
      await client.query('ROLLBACK')
      throw error
    } finally {
      client.release()
    }
  } catch (error: any) {
    console.error('❌ Error reseteando base de datos:', error)
    throw createError({
      statusCode: 500,
      statusMessage: 'Error reseteando base de datos',
      data: { message: error.message },
    })
  }
})
