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) { 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) { if (error instanceof Prisma.PrismaClientValidationError) {

View File

@ -1,3 +1,4 @@
import { Prisma } from "@prisma/client";
import { AppError } from "./app"; import { AppError } from "./app";
export function ErrorForwarder( export function ErrorForwarder(
@ -5,7 +6,14 @@ export function ErrorForwarder(
statusCode: number = 500, statusCode: number = 500,
message: string = "Unexpected error" message: string = "Unexpected error"
): never { ): 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; throw cause;
} }

View File

@ -27,7 +27,7 @@ export const loginWithPassword = async (
const jwtToken = await loginWithPasswordService(ctx.body, userHeaderInfo); const jwtToken = await loginWithPasswordService(ctx.body, userHeaderInfo);
// Set the authentication cookie with the JWT token // 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( return returnWriteResponse(
ctx.set, ctx.set,
200, 200,

View File

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

View File

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

View File

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