fix: add prisma to forwarder error instance

This commit is contained in:
rafiarrafif
2025-05-27 23:37:24 +07:00
parent ab84abf366
commit b52f1202eb
6 changed files with 17 additions and 7 deletions

View File

@ -38,7 +38,7 @@ export const mainErrorHandler = (set: any, error: unknown) => {
}
if (error instanceof Prisma.PrismaClientInitializationError) {
return returnErrorResponse(set, 500, "Database initialization failed");
return returnErrorResponse(set, 503, `Can't reach database server.`, error);
}
if (error instanceof Prisma.PrismaClientValidationError) {

View File

@ -1,3 +1,4 @@
import { Prisma } from "@prisma/client";
import { AppError } from "./app";
export function ErrorForwarder(
@ -5,7 +6,14 @@ export function ErrorForwarder(
statusCode: number = 500,
message: string = "Unexpected error"
): never {
if (cause instanceof AppError) {
if (
cause instanceof AppError ||
cause instanceof Prisma.PrismaClientKnownRequestError ||
cause instanceof Prisma.PrismaClientUnknownRequestError ||
cause instanceof Prisma.PrismaClientRustPanicError ||
cause instanceof Prisma.PrismaClientInitializationError ||
cause instanceof Prisma.PrismaClientValidationError
) {
throw cause;
}

View File

@ -27,7 +27,7 @@ export const loginWithPassword = async (
const jwtToken = await loginWithPasswordService(ctx.body, userHeaderInfo);
// Set the authentication cookie with the JWT token
const cookie = setCookie(ctx.set, COOKIE_KEYS.AUTH, jwtToken);
setCookie(ctx.set, COOKIE_KEYS.AUTH, jwtToken);
return returnWriteResponse(
ctx.set,
200,

View File

@ -34,6 +34,6 @@ export const findUserByEmailOrUsernameRepo = async (identifier: string) => {
if (!userData) return false;
return userData;
} catch (error) {
throw new AppError(500, "Database error", error);
throw error;
}
};

View File

@ -1,11 +1,12 @@
import { Prisma } from "@prisma/client";
import { userSessionModel } from "../userSession.model";
import { AppError } from "../../../helpers/error/instances/app";
export const createUserSessionRepo = async (
data: Prisma.UserSessionUncheckedCreateInput
) => {
try {
const newUserRole = await userSessionModel.create({
const newUserSession = await userSessionModel.create({
data: data,
include: {
user: {
@ -24,7 +25,7 @@ export const createUserSessionRepo = async (
updatedAt: true,
},
});
return newUserRole;
return newUserSession;
} catch (error) {
throw error;
}

View File

@ -1,6 +1,7 @@
import { createUserSessionServiceParams } from "../userSession.types";
import { createUserSessionRepo } from "../repositories/insertUserSessionToDB.repository";
import { storeUserSessionToCacheRepo } from "../repositories/storeUserSessionToCache.repository";
import { ErrorForwarder } from "../../../helpers/error/instances/forwarder";
export const createUserSessionService = async (
data: createUserSessionServiceParams
@ -21,6 +22,6 @@ export const createUserSessionService = async (
return newUserSession;
} catch (error) {
throw error;
ErrorForwarder(error);
}
};