import { Request, Response, NextFunction } from 'express';
import { AppError } from '../utils/AppError';

export { AppError };

export function errorHandler(
  err: Error,
  _req: Request,
  res: Response,
  _next: NextFunction,
): void {
  if (err instanceof AppError) {
    res.status(err.statusCode).json({
      error: err.code,
      message: err.message,
      details: err.details ?? {},
    });
    return;
  }

  console.error(err);
  res.status(500).json({
    error: 'internal_error',
    message: 'An unexpected error occurred.',
  });
}

export function notFoundHandler(_req: Request, res: Response): void {
  res.status(404).json({ error: 'not_found', message: 'Resource not found.' });
}
