SurfSense/surfsense_web/lib/apis/roles-api.service.ts

43 lines
1.1 KiB
TypeScript
Raw Normal View History

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();