fix: update members API service to follow established patterns with safeParse and arrow functions

This commit is contained in:
CREDO23 2025-12-16 13:58:26 +00:00
parent 22f8d5bbbb
commit d747f59ae9

View file

@ -1,38 +1,57 @@
import { baseApiService } from "./base-api.service";
import { import {
type GetMembersRequest, type GetMembersRequest,
type GetMembersResponse,
type UpdateMembershipRequest,
type UpdateMembershipResponse,
getMembersRequest, getMembersRequest,
getMembersResponse, getMembersResponse,
type UpdateMembershipRequest,
updateMembershipRequest, updateMembershipRequest,
updateMembershipResponse, updateMembershipResponse,
} from "@/contracts/types/members.types"; } from "@/contracts/types/members.types";
import { ValidationError } from "@/lib/error";
import { baseApiService } from "./base-api.service";
class MembersApiService { class MembersApiService {
/** /**
* Get members of a search space * Get members of a search space
*/ */
async getMembers(request: GetMembersRequest) { getMembers = async (request: GetMembersRequest) => {
const parsedRequest = getMembersRequest.parse(request); const parsedRequest = getMembersRequest.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.get( return baseApiService.get(
`/searchspaces/${parsedRequest.search_space_id}/members`, `/searchspaces/${parsedRequest.data.search_space_id}/members`,
getMembersResponse, getMembersResponse,
); );
} };
/** /**
* Update a member's role * Update a member's role
*/ */
async updateMember(request: UpdateMembershipRequest) { updateMember = async (request: UpdateMembershipRequest) => {
const parsedRequest = updateMembershipRequest.parse(request); const parsedRequest = updateMembershipRequest.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.put( return baseApiService.put(
`/searchspaces/${parsedRequest.search_space_id}/members/${parsedRequest.membership_id}`, `/searchspaces/${parsedRequest.data.search_space_id}/members/${parsedRequest.data.membership_id}`,
updateMembershipResponse, updateMembershipResponse,
{ {
body: parsedRequest.data, body: parsedRequest.data.data,
}, },
); );
} };
} }
export const membersApiService = new MembersApiService(); export const membersApiService = new MembersApiService();