From fb1654e0483e11a35102b7f539f015f159fd96ce Mon Sep 17 00:00:00 2001 From: rafiarrafif Date: Wed, 7 May 2025 21:54:25 +0700 Subject: [PATCH] utilizing user role repository --- .../controller/createUserRole.controller.ts | 47 +++++++------------ .../services/createUserRole.service.ts | 24 +++++++--- src/modules/userRole/userRole.repository.ts | 15 ++++++ 3 files changed, 49 insertions(+), 37 deletions(-) diff --git a/src/modules/userRole/controller/createUserRole.controller.ts b/src/modules/userRole/controller/createUserRole.controller.ts index ba5167f..cfce046 100644 --- a/src/modules/userRole/controller/createUserRole.controller.ts +++ b/src/modules/userRole/controller/createUserRole.controller.ts @@ -7,7 +7,7 @@ import { import { createUserRoleSchema } from "../userRole.schema"; import { JWTDecodeToken } from "../../../helpers/jwt/decodeToken"; import { createUserRoleService } from "../services/createUserRole.service"; -import { PrismaErrorTypes } from "../../../utils/databases/prisma/error/types"; +import { handlePrismaError } from "../../../utils/databases/prisma/error/handler"; /** * @function createUserRole @@ -49,36 +49,21 @@ export const createUserRole = async ( if (error) return returnErrorResponse(ctx.set, 400, "Invalid user input", error); - const formData: Prisma.UserRoleUncheckedCreateInput = { ...ctx.body }; - const userCreator = JWTDecodeToken(ctx); - - const dataPayload = { - ...formData, - isSuperadmin: Boolean(formData.isSuperadmin), - canEditMedia: Boolean(formData.canEditMedia), - canManageMedia: Boolean(formData.canManageMedia), - canEditEpisodes: Boolean(formData.canEditEpisodes), - canManageEpisodes: Boolean(formData.canManageEpisodes), - canEditComment: Boolean(formData.canEditComment), - canManageComment: Boolean(formData.canManageComment), - canEditUser: Boolean(formData.canEditUser), - canManageUser: Boolean(formData.canManageUser), - canEditSystem: Boolean(formData.canEditSystem), - canManageSystem: Boolean(formData.canManageSystem), - createdBy: userCreator.user.id, - deletedAt: null, + const formData: Prisma.UserRoleUncheckedCreateInput = { + ...ctx.body, + createdBy: JWTDecodeToken(ctx).user.id, }; - createUserRoleService(dataPayload) - .then((result) => { - return returnWriteResponse(ctx.set, 201, "User role created", result); - }) - .catch((error: PrismaErrorTypes) => { - return returnErrorResponse( - ctx.set, - error.status, - error.message, - error.details - ); - }); + try { + const newUserRole = await createUserRoleService(formData); + return returnWriteResponse( + ctx.set, + 201, + "User role created successfully", + newUserRole + ); + } catch (error) { + const { status, message, details } = handlePrismaError(error); + return returnErrorResponse(ctx.set, status, message, details); + } }; diff --git a/src/modules/userRole/services/createUserRole.service.ts b/src/modules/userRole/services/createUserRole.service.ts index e149bec..6990287 100644 --- a/src/modules/userRole/services/createUserRole.service.ts +++ b/src/modules/userRole/services/createUserRole.service.ts @@ -1,16 +1,28 @@ import { Prisma } from "@prisma/client"; -import { userRoleModel } from "../userRole.model"; -import { handlePrismaError } from "../../../utils/databases/prisma/error/handler"; +import { createUserRoleRepo } from "../userRole.repository"; export const createUserRoleService = async ( userRoleData: Prisma.UserRoleUncheckedCreateInput ) => { try { - const newUserRole = await userRoleModel.create({ - data: userRoleData, - }); + const dataPayload = { + ...userRoleData, + isSuperadmin: Boolean(userRoleData.isSuperadmin), + canEditMedia: Boolean(userRoleData.canEditMedia), + canManageMedia: Boolean(userRoleData.canManageMedia), + canEditEpisodes: Boolean(userRoleData.canEditEpisodes), + canManageEpisodes: Boolean(userRoleData.canManageEpisodes), + canEditComment: Boolean(userRoleData.canEditComment), + canManageComment: Boolean(userRoleData.canManageComment), + canEditUser: Boolean(userRoleData.canEditUser), + canManageUser: Boolean(userRoleData.canManageUser), + canEditSystem: Boolean(userRoleData.canEditSystem), + canManageSystem: Boolean(userRoleData.canManageSystem), + deletedAt: null, + }; + const newUserRole = await createUserRoleRepo(dataPayload); return newUserRole; } catch (error) { - return handlePrismaError(error); + throw error; } }; diff --git a/src/modules/userRole/userRole.repository.ts b/src/modules/userRole/userRole.repository.ts index e69de29..e942019 100644 --- a/src/modules/userRole/userRole.repository.ts +++ b/src/modules/userRole/userRole.repository.ts @@ -0,0 +1,15 @@ +import { Prisma } from "@prisma/client"; +import { userRoleModel } from "./userRole.model"; + +export const createUserRoleRepo = async ( + data: Prisma.UserRoleUncheckedCreateInput +) => { + try { + const newUserRole = await userRoleModel.create({ + data, + }); + return newUserRole; + } catch (error) { + throw error; + } +};