| 12345678910111213141516171819202122232425 |
- import { ZodError } from "zod";
- import { AppError } from "../shared/errors/index.js";
- export function errorHandler(err, _req, res, _next) {
- if (err instanceof ZodError) {
- return res.status(400).json({ error: "validation_error", details: err.errors });
- }
- if (err instanceof AppError) {
- return res.status(err.statusCode).json({ error: err.message, ...(err.details ?? {}) });
- }
- if (err?.code === "ER_DUP_ENTRY" || err?.nativeError?.code === "ER_DUP_ENTRY") {
- return res.status(409).json({ error: "Registro duplicado (login ou email já cadastrado)." });
- }
- const status = Number(err?.statusCode ?? err?.status ?? 500);
- const message = typeof err?.message === "string" ? err.message : "internal_error";
- if (status >= 500) {
- console.error("[error]", err);
- }
- res.status(status).json({ error: message });
- }
|