utilizing user role repository

This commit is contained in:
rafiarrafif
2025-05-07 21:54:25 +07:00
parent 836c7f7415
commit fb1654e048
3 changed files with 49 additions and 37 deletions

View File

@ -7,7 +7,7 @@ import {
import { createUserRoleSchema } from "../userRole.schema"; import { createUserRoleSchema } from "../userRole.schema";
import { JWTDecodeToken } from "../../../helpers/jwt/decodeToken"; import { JWTDecodeToken } from "../../../helpers/jwt/decodeToken";
import { createUserRoleService } from "../services/createUserRole.service"; import { createUserRoleService } from "../services/createUserRole.service";
import { PrismaErrorTypes } from "../../../utils/databases/prisma/error/types"; import { handlePrismaError } from "../../../utils/databases/prisma/error/handler";
/** /**
* @function createUserRole * @function createUserRole
@ -49,36 +49,21 @@ export const createUserRole = async (
if (error) if (error)
return returnErrorResponse(ctx.set, 400, "Invalid user input", error); return returnErrorResponse(ctx.set, 400, "Invalid user input", error);
const formData: Prisma.UserRoleUncheckedCreateInput = { ...ctx.body }; const formData: Prisma.UserRoleUncheckedCreateInput = {
const userCreator = JWTDecodeToken(ctx); ...ctx.body,
createdBy: JWTDecodeToken(ctx).user.id,
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,
}; };
createUserRoleService(dataPayload) try {
.then((result) => { const newUserRole = await createUserRoleService(formData);
return returnWriteResponse(ctx.set, 201, "User role created", result); return returnWriteResponse(
}) ctx.set,
.catch((error: PrismaErrorTypes) => { 201,
return returnErrorResponse( "User role created successfully",
ctx.set, newUserRole
error.status, );
error.message, } catch (error) {
error.details const { status, message, details } = handlePrismaError(error);
); return returnErrorResponse(ctx.set, status, message, details);
}); }
}; };

View File

@ -1,16 +1,28 @@
import { Prisma } from "@prisma/client"; import { Prisma } from "@prisma/client";
import { userRoleModel } from "../userRole.model"; import { createUserRoleRepo } from "../userRole.repository";
import { handlePrismaError } from "../../../utils/databases/prisma/error/handler";
export const createUserRoleService = async ( export const createUserRoleService = async (
userRoleData: Prisma.UserRoleUncheckedCreateInput userRoleData: Prisma.UserRoleUncheckedCreateInput
) => { ) => {
try { try {
const newUserRole = await userRoleModel.create({ const dataPayload = {
data: userRoleData, ...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; return newUserRole;
} catch (error) { } catch (error) {
return handlePrismaError(error); throw error;
} }
}; };

View File

@ -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;
}
};