const logger = require('../utils/logger'); const errorHandler = (err, req, res, next) => { let error = { ...err }; error.message = err.message; // Log error logger.error(err); // Mongoose bad ObjectId if (err.name === 'CastError') { const message = 'Resource not found'; error = { message, statusCode: 404 }; } // Mongoose duplicate key if (err.code === 11000) { const message = 'Duplicate field value entered'; error = { message, statusCode: 400 }; } // Mongoose validation error if (err.name === 'ValidationError') { const message = Object.values(err.errors).map(val => val.message); error = { message, statusCode: 400 }; } res.status(error.statusCode || 500).json({ success: false, error: error.message || 'Server Error' }); }; const notFound = (req, res, next) => { const error = new Error(`Not found - ${req.originalUrl}`); res.status(404); next(error); }; module.exports = { errorHandler, notFound };