mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-03 22:33:13 +00:00
42 lines
1.5 KiB
TypeScript
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));
|
|
},
|
|
};
|