mejorando el handling de los errores
Some checks failed
build-and-deploy / filter (push) Successful in 2s
Sync to GitHub / sync (push) Failing after 2s
build-and-deploy / build (push) Successful in 9s
build-and-deploy / deploy (push) Successful in 15s

This commit is contained in:
2025-05-30 11:21:35 -06:00
parent faa18be61d
commit 6c7e008164

View File

@@ -1,6 +1,6 @@
import express from 'express';
const router = express.Router();
import { PrismaClient } from '../../prisma/generated/client/index.js';
import { PrismaClient, Prisma } from '../../prisma/generated/client/index.js';
const prisma = new PrismaClient();
// GET all asistencias
@@ -32,7 +32,7 @@ router.get('/:id', async (req, res) => {
}
});
// POST /api/asistencias ➜ crear asistencia
// POST ➜ crear asistencia
router.post('/', async (req, res) => {
const {
empleado_id,
@@ -40,7 +40,7 @@ router.post('/', async (req, res) => {
salida,
historial,
observacion,
estado = 'pendiente',
estado,
fecha_anulado,
creador_id,
modificado_id,
@@ -53,13 +53,13 @@ router.post('/', async (req, res) => {
try {
const nuevaAsistencia = await prisma.asistencia.create({
data: {
empleado: { connect: { id: BigInt(empleado_id) } }, // FK con validación implícita
entrada: entrada ? new Date(entrada) : null,
salida: salida ? new Date(salida) : null,
historial, // tipo Json en el schema
empleado_id: BigInt(empleado_id), // FK a Cliente.id
entrada: entrada ? new Date(entrada) : null,
salida: salida ? new Date(salida) : null,
historial, // JSON
observacion,
estado,
fecha_anulado: fecha_anulado ? new Date(fecha_anulado) : null,
fecha_anulado: fecha_anulado ? new Date(fecha_anulado) : null,
creador_id,
modificado_id,
anulador_id,
@@ -67,23 +67,22 @@ router.post('/', async (req, res) => {
})
res.status(201).json(nuevaAsistencia)
} catch (error) {
console.error(error)
} catch (e){
// FK inválida
if (
error.code === 'P2003' &&
error.meta?.constraint === 'Asistencia_empleado_id_fkey'
)
return res
.status(400)
.json({ error: 'El empleado_id proporcionado no existe.' })
// ⚠️ captura FK error: Asistencia_empleado_id_fkey
if(e instanceof Prisma.PrismaClientKnownRequestError ) {
if( e.code === 'P2003') {
return res.status(400).json({ error: 'El empleado_id proporcionado no existe.' })
}
}
console.error(e)
res.status(500).json({ error: 'Error al crear asistencia.' })
}
})
// PUT update asistencia by ID
router.put('/:id', async (req, res) => {
const { id } = req.params;