Files
datacenter-designer/server/lib/errorHandler.js
Stefano Manfredi 3431a121a9 First commit
2025-10-27 11:57:38 +00:00

67 lines
1.7 KiB
JavaScript

/**
* Error Handling Middleware
* Centralized error handling for consistent API responses
*/
/**
* Error handler middleware
* Catches errors from routes and formats response
*/
function errorHandler(err, req, res, next) {
// Log error for debugging
console.error('Error:', err);
// Default error response
let statusCode = 500;
let message = 'Internal server error';
// Handle specific error types
if (err.message) {
message = err.message;
// SQLite constraint errors
if (err.message.includes('UNIQUE constraint')) {
statusCode = 409; // Conflict
message = 'A record with that value already exists';
} else if (err.message.includes('FOREIGN KEY constraint')) {
statusCode = 400; // Bad Request
message = 'Invalid reference to related record';
} else if (err.message.includes('NOT NULL constraint')) {
statusCode = 400;
message = 'Required field is missing';
} else if (err.message.includes('CHECK constraint')) {
statusCode = 400;
message = 'Value does not meet validation requirements';
}
// Custom application errors
else if (err.message.includes('not found')) {
statusCode = 404;
} else if (err.message.includes('Cannot delete')) {
statusCode = 400;
}
}
// Send error response
res.status(statusCode).json({
error: message,
...(process.env.NODE_ENV === 'development' && { stack: err.stack })
});
}
/**
* 404 Not Found handler
* Catches requests to undefined routes
*/
function notFoundHandler(req, res) {
res.status(404).json({
error: 'Route not found',
path: req.path
});
}
module.exports = {
errorHandler,
notFoundHandler
};