55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
import { Prisma } from "@prisma/client";
|
|
import { returnErrorResponse } from "../../callback/httpResponse";
|
|
import { AppError } from "../instances/app";
|
|
import { PrismaErrorCodeList } from "../../../utils/databases/prisma/error/codeList";
|
|
|
|
export const mainErrorHandler = (set: any, error: unknown) => {
|
|
if (error instanceof AppError) {
|
|
return returnErrorResponse(
|
|
set,
|
|
error.statusCode,
|
|
error.message,
|
|
error.details
|
|
);
|
|
}
|
|
|
|
if (error instanceof Prisma.PrismaClientKnownRequestError) {
|
|
const errorInfo = PrismaErrorCodeList[error.code];
|
|
|
|
if (errorInfo)
|
|
return returnErrorResponse(
|
|
set,
|
|
errorInfo.status,
|
|
errorInfo.message,
|
|
error.meta ?? {}
|
|
);
|
|
}
|
|
|
|
if (error instanceof Prisma.PrismaClientUnknownRequestError) {
|
|
return returnErrorResponse(set, 500, "Unknown database error");
|
|
}
|
|
|
|
if (error instanceof Prisma.PrismaClientRustPanicError) {
|
|
return returnErrorResponse(
|
|
set,
|
|
500,
|
|
"Database engine crashed unexpectedly"
|
|
);
|
|
}
|
|
|
|
if (error instanceof Prisma.PrismaClientInitializationError) {
|
|
return returnErrorResponse(set, 500, "Database initialization failed");
|
|
}
|
|
|
|
if (error instanceof Prisma.PrismaClientValidationError) {
|
|
return returnErrorResponse(
|
|
set,
|
|
400,
|
|
"Invalid input to query",
|
|
error.message
|
|
);
|
|
}
|
|
|
|
return returnErrorResponse(set, 500, "Internal server error");
|
|
};
|