Qassure-frontend/src/services/role-service.ts
2026-01-19 19:36:31 +05:30

49 lines
1.6 KiB
TypeScript

import apiClient from './api-client';
import type {
RolesResponse,
CreateRoleRequest,
CreateRoleResponse,
GetRoleResponse,
UpdateRoleRequest,
UpdateRoleResponse,
DeleteRoleResponse,
} from '@/types/role';
export const roleService = {
getAll: async (
page: number = 1,
limit: number = 20,
scope?: string | null,
orderBy?: string[] | null
): Promise<RolesResponse> => {
const params = new URLSearchParams();
params.append('page', String(page));
params.append('limit', String(limit));
if (scope) {
params.append('scope', scope);
}
if (orderBy && Array.isArray(orderBy) && orderBy.length === 2) {
params.append('orderBy[]', orderBy[0]);
params.append('orderBy[]', orderBy[1]);
}
const response = await apiClient.get<RolesResponse>(`/roles?${params.toString()}`);
return response.data;
},
getById: async (id: string): Promise<GetRoleResponse> => {
const response = await apiClient.get<GetRoleResponse>(`/roles/${id}`);
return response.data;
},
create: async (data: CreateRoleRequest): Promise<CreateRoleResponse> => {
const response = await apiClient.post<CreateRoleResponse>('/roles', data);
return response.data;
},
update: async (id: string, data: UpdateRoleRequest): Promise<UpdateRoleResponse> => {
const response = await apiClient.put<UpdateRoleResponse>(`/roles/${id}`, data);
return response.data;
},
delete: async (id: string): Promise<DeleteRoleResponse> => {
const response = await apiClient.delete<DeleteRoleResponse>(`/roles/${id}`);
return response.data;
},
};