shoc-frontend-new/src/domain/team-members/api/team-members-api.ts
2026-09-16 20:27:05 -03:00

42 lines
1.5 KiB
TypeScript

import { apiGet, apiPost, apiPut } from "@/api/api";
import { API_PATHS } from "@/api/api-paths";
import { handleApiResponse } from "@/api/handle-api-response";
import {
mapTeamMemberDetail,
mapTeamMemberListItems,
} from "@/domain/team-members/mappers/team-member-mapper";
import type {
CreateTeamMemberInput,
TeamMemberCreated,
TeamMemberDetail,
TeamMemberListResult,
UpdateTeamMemberInput,
} from "@/domain/team-members/types/team-member";
export const teamMembersApi = {
getList: async (): Promise<TeamMemberListResult> => {
const data = await apiGet<unknown>(API_PATHS.teamMember.getList);
const items = handleApiResponse<unknown[]>(data);
return { items: mapTeamMemberListItems(Array.isArray(items) ? items : []) };
},
create: async (input: CreateTeamMemberInput): Promise<TeamMemberCreated> => {
const data = await apiPost<unknown>(API_PATHS.teamMember.create, input);
return handleApiResponse<TeamMemberCreated>(data);
},
getDetail: async (id: string | number): Promise<TeamMemberDetail> => {
const data = await apiGet<unknown>(
`${API_PATHS.teamMember.detail}/${encodeURIComponent(String(id))}`,
);
return mapTeamMemberDetail(handleApiResponse<unknown>(data));
},
update: async (id: string | number, input: UpdateTeamMemberInput): Promise<TeamMemberDetail> => {
const data = await apiPut<unknown>(
`${API_PATHS.teamMember.detail}/${encodeURIComponent(String(id))}`,
input,
);
return mapTeamMemberDetail(handleApiResponse<unknown>(data));
},
};