implementado el manejo de errores correcto de prisma
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
import express from 'express'
|
||||
import { PrismaClient } from '../../prisma/generated/client/index.js'
|
||||
import { PrismaClient, Prisma } from '../../prisma/generated/client/index.js'
|
||||
|
||||
const router = express.Router()
|
||||
const prisma = new PrismaClient()
|
||||
|
||||
// ⚙️ helper: evita el crash al serializar BigInt
|
||||
const fixBigInt = (data) =>
|
||||
JSON.parse(JSON.stringify(data, (_, v) => (typeof v === 'bigint' ? v.toString() : v)))
|
||||
|
||||
@@ -59,9 +58,13 @@ router.post('/', async (req, res) => {
|
||||
})
|
||||
res.status(201).json(fixBigInt(nuevo))
|
||||
} catch (e) {
|
||||
if (e instanceof Prisma.PrismaClientKnownRequestError) {
|
||||
if (e.code === 'P2002' && e.meta?.target?.includes('cedula')) {
|
||||
return res.status(400).json({ message: 'Ya existe un cliente con esa cédula.' })
|
||||
}
|
||||
}
|
||||
|
||||
console.error(e)
|
||||
if (e.code === 'P2002' && e.meta?.target?.includes('cedula'))
|
||||
return res.status(400).json({ message: 'Ya existe un cliente con esa cédula.' })
|
||||
res.status(500).json({ message: 'Error al crear empleado.' })
|
||||
}
|
||||
})
|
||||
@@ -97,11 +100,16 @@ router.put('/:id', async (req, res) => {
|
||||
})
|
||||
res.json(fixBigInt(actualizado))
|
||||
} catch (e) {
|
||||
if (e instanceof Prisma.PrismaClientKnownRequestError) {
|
||||
if (e.code === 'P2002' && e.meta?.target?.includes('cedula')) {
|
||||
return res.status(400).json({ message: 'Ya existe un cliente con esa cédula.' })
|
||||
}
|
||||
if (e.code === 'P2025') {
|
||||
return res.status(404).json({ message: 'Empleado no encontrado para actualizar.' })
|
||||
}
|
||||
}
|
||||
|
||||
console.error(e)
|
||||
if (e.code === 'P2002' && e.meta?.target?.includes('cedula'))
|
||||
return res.status(400).json({ message: 'Ya existe un cliente con esa cédula.' })
|
||||
if (e.code === 'P2025')
|
||||
return res.status(404).json({ message: 'Empleado no encontrado para actualizar.' })
|
||||
res.status(500).json({ message: 'Error al actualizar empleado.' })
|
||||
}
|
||||
})
|
||||
@@ -116,9 +124,13 @@ router.delete('/:id', async (req, res) => {
|
||||
await prisma.cliente.delete({ where: { id } })
|
||||
res.status(204).send()
|
||||
} catch (e) {
|
||||
if (e instanceof Prisma.PrismaClientKnownRequestError) {
|
||||
if (e.code === 'P2025') {
|
||||
return res.status(404).json({ message: 'Empleado no encontrado para eliminar.' })
|
||||
}
|
||||
}
|
||||
|
||||
console.error(e)
|
||||
if (e.code === 'P2025')
|
||||
return res.status(404).json({ message: 'Empleado no encontrado para eliminar.' })
|
||||
res.status(500).json({ message: 'Error al eliminar empleado.' })
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user