mejorando el handling de los errores
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import express from 'express';
|
import express from 'express';
|
||||||
const router = express.Router();
|
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();
|
const prisma = new PrismaClient();
|
||||||
|
|
||||||
// GET all asistencias
|
// 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) => {
|
router.post('/', async (req, res) => {
|
||||||
const {
|
const {
|
||||||
empleado_id,
|
empleado_id,
|
||||||
@@ -40,7 +40,7 @@ router.post('/', async (req, res) => {
|
|||||||
salida,
|
salida,
|
||||||
historial,
|
historial,
|
||||||
observacion,
|
observacion,
|
||||||
estado = 'pendiente',
|
estado,
|
||||||
fecha_anulado,
|
fecha_anulado,
|
||||||
creador_id,
|
creador_id,
|
||||||
modificado_id,
|
modificado_id,
|
||||||
@@ -53,13 +53,13 @@ router.post('/', async (req, res) => {
|
|||||||
try {
|
try {
|
||||||
const nuevaAsistencia = await prisma.asistencia.create({
|
const nuevaAsistencia = await prisma.asistencia.create({
|
||||||
data: {
|
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,
|
entrada: entrada ? new Date(entrada) : null,
|
||||||
salida: salida ? new Date(salida) : null,
|
salida: salida ? new Date(salida) : null,
|
||||||
historial, // tipo Json en el schema
|
historial, // JSON
|
||||||
observacion,
|
observacion,
|
||||||
estado,
|
estado,
|
||||||
fecha_anulado: fecha_anulado ? new Date(fecha_anulado) : null,
|
fecha_anulado: fecha_anulado ? new Date(fecha_anulado) : null,
|
||||||
creador_id,
|
creador_id,
|
||||||
modificado_id,
|
modificado_id,
|
||||||
anulador_id,
|
anulador_id,
|
||||||
@@ -67,23 +67,22 @@ router.post('/', async (req, res) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
res.status(201).json(nuevaAsistencia)
|
res.status(201).json(nuevaAsistencia)
|
||||||
} catch (error) {
|
} catch (e){
|
||||||
console.error(error)
|
|
||||||
|
|
||||||
// FK inválida
|
// ⚠️ captura FK error: Asistencia_empleado_id_fkey
|
||||||
if (
|
if(e instanceof Prisma.PrismaClientKnownRequestError ) {
|
||||||
error.code === 'P2003' &&
|
if( e.code === 'P2003') {
|
||||||
error.meta?.constraint === 'Asistencia_empleado_id_fkey'
|
return res.status(400).json({ error: 'El empleado_id proporcionado no existe.' })
|
||||||
)
|
}
|
||||||
return res
|
}
|
||||||
.status(400)
|
|
||||||
.json({ error: 'El empleado_id proporcionado no existe.' })
|
|
||||||
|
|
||||||
|
console.error(e)
|
||||||
res.status(500).json({ error: 'Error al crear asistencia.' })
|
res.status(500).json({ error: 'Error al crear asistencia.' })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// PUT update asistencia by ID
|
// PUT update asistencia by ID
|
||||||
router.put('/:id', async (req, res) => {
|
router.put('/:id', async (req, res) => {
|
||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
|
|||||||
Reference in New Issue
Block a user