satupeta-main/shared/services/user.ts
2026-01-27 09:31:12 +07:00

48 lines
1.1 KiB
TypeScript

import { UserFormValues } from "../schemas/user";
import { PaginatedResponse } from "../types/api-response";
import { User } from "../types/user";
import { apiHelpers } from "./api";
const userApi = {
getUsers: async (params?: {
filter?: string | string[];
limit?: number;
offset?: number;
sort?: string;
}): Promise<PaginatedResponse<User[]>> => {
const filteredParams = { ...params };
if (!filteredParams.sort) {
delete filteredParams.sort;
}
return apiHelpers.get("/users", {
params: filteredParams,
paramsSerializer: {
indexes: null,
},
});
},
getUserById: async (id: string): Promise<User> => {
return apiHelpers.get(`/users/${id}`);
},
deleteUser: async (id?: string): Promise<User> => {
return apiHelpers.delete(`/users/${id}`);
},
createUser: async (user: Omit<UserFormValues, "id">): Promise<User> => {
return apiHelpers.post("/users", user);
},
updateUser: async (
id: string,
user: Partial<UserFormValues>
): Promise<User> => {
return apiHelpers.patch(`/users/${id}`, user);
},
};
export default userApi;