11import type { Request , Response , NextFunction } from 'express' ;
22import { Prisma } from '../generated/prisma/index.js' ;
3- import { ZodError } from 'zod' ;
3+ import { ZodError , type ZodIssue } from 'zod' ;
44import logger from '../logger.js' ;
55
66/**
77 * Global error handler middleware
88 */
99export const errorHandler = (
10- err : any ,
10+ err : unknown ,
1111 req : Request ,
1212 res : Response ,
1313 next : NextFunction
@@ -18,7 +18,7 @@ export const errorHandler = (
1818 if ( err instanceof ZodError ) {
1919 return res . status ( 400 ) . json ( {
2020 error : 'Validation Error' ,
21- details : err . issues . map ( ( e : any ) => ( {
21+ details : err . issues . map ( ( e : ZodIssue ) => ( {
2222 path : e . path . join ( '.' ) ,
2323 message : e . message
2424 } ) )
@@ -28,26 +28,26 @@ export const errorHandler = (
2828 // Handle Prisma Errors
2929 if ( err instanceof Prisma . PrismaClientKnownRequestError ) {
3030 // Unique constraint violation
31- if ( err . code === 'P2002' ) {
32- const target = ( err . meta ?. target as string [ ] ) ?. join ( ', ' ) || 'field' ;
31+ if ( ( err as Prisma . PrismaClientKnownRequestError ) . code === 'P2002' ) {
32+ const target = ( ( err as Prisma . PrismaClientKnownRequestError ) . meta ?. target as string [ ] ) ?. join ( ', ' ) || 'field' ;
3333 return res . status ( 409 ) . json ( {
3434 error : 'Conflict Error' ,
3535 message : `Record with this ${ target } already exists.`
3636 } ) ;
3737 }
3838
3939 // Record not found
40- if ( err . code === 'P2025' ) {
40+ if ( ( err as Prisma . PrismaClientKnownRequestError ) . code === 'P2025' ) {
4141 return res . status ( 404 ) . json ( {
4242 error : 'Not Found' ,
43- message : err . message || 'The requested record was not found.'
43+ message : ( err as Prisma . PrismaClientKnownRequestError ) . message || 'The requested record was not found.'
4444 } ) ;
4545 }
4646 }
4747
4848 // Default Error
49- const statusCode = err . status || err . statusCode || 500 ;
50- const message = err . message || 'Internal Server Error' ;
49+ const statusCode = ( err instanceof Error && ( err as any ) . status ) || ( err instanceof Error && ( err as any ) . statusCode ) || 500 ;
50+ const message = err instanceof Error ? err . message : 'Internal Server Error' ;
5151
5252 res . status ( statusCode ) . json ( {
5353 error : statusCode === 500 ? 'Internal Server Error' : 'Error' ,
0 commit comments