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 { 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);
}
};

View File

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

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