32 lines
1009 B
TypeScript
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
|