| import { Request, Response, NextFunction } from 'express'; | |
| import { logger } from '../utils/logger'; | |
| export const errorHandler = ( | |
| err: Error, | |
| _req: Request, | |
| res: Response, | |
| _next: NextFunction | |
| ): void => { | |
| logger.error(err.message, { stack: err.stack }); | |
| if (err.name === 'ValidationError') { | |
| res.status(400).json({ error: err.message }); | |
| return; | |
| } | |
| if (err.name === 'CastError') { | |
| res.status(400).json({ error: 'Invalid ID format.' }); | |
| return; | |
| } | |
| if ((err as any).code === 11000) { | |
| res.status(409).json({ error: 'Duplicate entry. Resource already exists.' }); | |
| return; | |
| } | |
| res.status(500).json({ error: 'Internal server error.' }); | |
| }; | |