From 4affdf70a6cd44424fd1ca40902fa69ec8d38758 Mon Sep 17 00:00:00 2001 From: CREDO23 Date: Mon, 15 Dec 2025 20:54:02 +0000 Subject: [PATCH] fix: correct roles-api.service.ts to use parsedRequest.data pattern --- surfsense_web/lib/apis/roles-api.service.ts | 42 +++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 surfsense_web/lib/apis/roles-api.service.ts diff --git a/surfsense_web/lib/apis/roles-api.service.ts b/surfsense_web/lib/apis/roles-api.service.ts new file mode 100644 index 000000000..12de889b1 --- /dev/null +++ b/surfsense_web/lib/apis/roles-api.service.ts @@ -0,0 +1,42 @@ +import { + type CreateRoleRequest, + createRoleRequest, + createRoleResponse, + type DeleteRoleRequest, + deleteRoleRequest, + deleteRoleResponse, + type GetRoleByIdRequest, + getRoleByIdRequest, + getRoleByIdResponse, + type GetRolesRequest, + getRolesRequest, + getRolesResponse, + type UpdateRoleRequest, + updateRoleRequest, + updateRoleResponse, +} from "@/contracts/types/roles.types"; +import { ValidationError } from "../error"; +import { baseApiService } from "./base-api.service"; + +class RolesApiService { + createRole = async (request: CreateRoleRequest) => { + const parsedRequest = createRoleRequest.safeParse(request); + + if (!parsedRequest.success) { + console.error("Invalid request:", parsedRequest.error); + + const errorMessage = parsedRequest.error.errors.map((err) => err.message).join(", "); + throw new ValidationError(`Invalid request: ${errorMessage}`); + } + + return baseApiService.post( + `/api/searchspaces/${parsedRequest.data.search_space_id}/roles`, + createRoleResponse, + { + body: parsedRequest.data.data, + }, + ); + }; +} + +export const rolesApiService = new RolesApiService();