Files
PilotEdge/server/src/middleware/errorHandler.js
Daniel Kovalevich f917fb8014 Add Node.js/Express backend with PostgreSQL and wire frontend to API
- Server: Express.js with 13 API route files (auth, regulations, contacts,
  calendar, truck stops, bridges, weigh stations, alerts, load board,
  escort locator, orders, documents, contributions)
- Database: PostgreSQL with Prisma ORM, 15 models covering all modules
- Auth: JWT + bcrypt with role-based access control (driver/carrier/escort/admin)
- Geospatial: Haversine distance filtering on truck stops, bridges, escorts
- Seed script: Imports all existing mock data (51 states, contacts, equipment,
  truck stops, bridges, weigh stations, alerts, seasonal restrictions)
- Frontend: All 10 data-driven pages now fetch from /api instead of mock-data.js
- API client (api.js): Compatibility layer that transforms API responses to
  match existing frontend rendering code, minimizing page-level changes

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-30 15:43:27 -04:00

25 lines
666 B
JavaScript

function errorHandler(err, req, res, next) {
console.error(`[ERROR] ${err.message}`);
if (process.env.NODE_ENV === 'development') {
console.error(err.stack);
}
if (err.name === 'ValidationError') {
return res.status(400).json({ error: err.message });
}
if (err.code === 'P2002') {
return res.status(409).json({ error: 'A record with that value already exists.' });
}
if (err.code === 'P2025') {
return res.status(404).json({ error: 'Record not found.' });
}
res.status(err.status || 500).json({
error: process.env.NODE_ENV === 'development' ? err.message : 'Internal server error',
});
}
module.exports = errorHandler;