Initial commit

This commit is contained in:
2025-08-16 19:43:44 +02:00
commit ea9a2627b4
64 changed files with 9232 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
function errorHandler(error, req, res, next) {
console.error('Error occurred:', error);
// Default error response
let statusCode = 500;
let message = 'Internal server error';
let details = null;
// Handle specific error types
if (error.name === 'ValidationError') {
statusCode = 400;
message = 'Validation error';
details = error.details || error.message;
} else if (error.name === 'UnauthorizedError') {
statusCode = 401;
message = 'Unauthorized';
} else if (error.name === 'SequelizeValidationError') {
statusCode = 400;
message = 'Database validation error';
details = error.errors.map(err => ({
field: err.path,
message: err.message
}));
} else if (error.name === 'SequelizeUniqueConstraintError') {
statusCode = 409;
message = 'Resource already exists';
details = error.errors.map(err => ({
field: err.path,
message: err.message
}));
} else if (error.name === 'SequelizeForeignKeyConstraintError') {
statusCode = 400;
message = 'Invalid reference';
} else if (error.status) {
statusCode = error.status;
message = error.message;
}
// Send error response
const response = {
success: false,
message,
timestamp: new Date().toISOString()
};
// Include error details in development
if (process.env.NODE_ENV === 'development') {
response.error = details || error.message;
response.stack = error.stack;
} else if (details) {
response.details = details;
}
res.status(statusCode).json(response);
}
module.exports = errorHandler;