mejorando el handling de los errores
This commit is contained in:
@@ -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,10 +53,10 @@ 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
|
||||
empleado_id: BigInt(empleado_id), // FK a Cliente.id
|
||||
entrada: entrada ? new Date(entrada) : null,
|
||||
salida: salida ? new Date(salida) : null,
|
||||
historial, // tipo Json en el schema
|
||||
historial, // JSON
|
||||
observacion,
|
||||
estado,
|
||||
fecha_anulado: fecha_anulado ? new Date(fecha_anulado) : null,
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user