b68/packages/api/libs/customErrHandler.ts

32 lines
1009 B
TypeScript

import { Response } from 'express'
import { ClientError } from 'graphql-request'
import { CustomError } from './error'
import { ValidationError } from 'joi'
const customErrorHandler = async (res: Response, error: any) => {
if (error instanceof ValidationError) {
return res.status(400).json({
success: false,
message: 'Data validation failed',
details: error.details,
})
}
if (error instanceof CustomError) {
return res
.status(error.statusCode)
.send({ success: false, message: error.message, data: error.data })
}
if (error instanceof ClientError) {
const { errors = [] } = error.response
const [err] = errors
if (err?.message) {
return res
.status(422)
.send({ success: false, message: err.message })
}
}
res.status(500).send({ success: false, message: 'Internal ServerError.' })
}
export default customErrorHandler