File size: 760 Bytes
11f4e50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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.' });
};