Files
seguidorDeLotes/nuxt4/server/api/lotes/[id]/trazabilidad.get.ts
josedario87 0bdb5013f7
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m6s
veamo
2025-11-22 01:10:37 -06:00

63 lines
1.5 KiB
TypeScript

import { getTrazabilidad, getEstadisticasLote } from '../../../utils/queries'
/**
* GET /api/lotes/:id/trazabilidad
* Obtiene el historial completo de trazabilidad de un lote
*
* Retorna todos los lotes ancestros hasta llegar a los ingresos iniciales,
* organizado por profundidad (0 = lote actual, n = ancestros más antiguos)
*/
export default defineEventHandler(async (event) => {
try {
const id = getRouterParam(event, 'id')
if (!id) {
throw createError({
statusCode: 400,
statusMessage: 'ID de lote requerido',
})
}
const isUuid = /^[0-9a-fA-F-]{36}$/.test(id)
if (!isUuid) {
throw createError({
statusCode: 400,
statusMessage: 'ID de lote inválido',
})
}
// Obtener trazabilidad completa
const trazabilidad = await getTrazabilidad(id)
if (trazabilidad.length === 0) {
throw createError({
statusCode: 404,
statusMessage: 'Lote no encontrado',
})
}
// Obtener estadísticas
const estadisticas = await getEstadisticasLote(id)
return {
success: true,
data: {
historial: trazabilidad,
estadisticas,
},
}
} catch (error: any) {
console.error('Error obteniendo trazabilidad:', error)
if (error.statusCode) {
throw error
}
throw createError({
statusCode: 500,
statusMessage: 'Error obteniendo trazabilidad',
data: { message: error.message },
})
}
})