58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import apiClient from '@/lib/api/client';
|
|
import {
|
|
CreateOrganizationDto,
|
|
UpdateOrganizationDto,
|
|
SearchOrganizationDto,
|
|
} from '@/types/dto/organization/organization.dto';
|
|
|
|
export const organizationService = {
|
|
/**
|
|
* Get all organizations (supports filtering by projectId)
|
|
* GET /organizations?projectId=1
|
|
*/
|
|
getAll: async (params?: SearchOrganizationDto) => {
|
|
const response = await apiClient.get('/organizations', { params });
|
|
// Normalize response if wrapped in data.data or direct data
|
|
if (response.data && Array.isArray(response.data.data)) {
|
|
return response.data.data;
|
|
}
|
|
return response.data.data || response.data;
|
|
},
|
|
|
|
/**
|
|
* Get organization by UUID
|
|
* GET /organizations/:uuid
|
|
*/
|
|
getByUuid: async (uuid: string) => {
|
|
const response = await apiClient.get(`/organizations/${uuid}`);
|
|
return response.data;
|
|
},
|
|
|
|
/**
|
|
* Create new organization
|
|
* POST /organizations
|
|
*/
|
|
create: async (data: CreateOrganizationDto) => {
|
|
const response = await apiClient.post('/organizations', data);
|
|
return response.data;
|
|
},
|
|
|
|
/**
|
|
* Update organization
|
|
* PATCH /organizations/:uuid
|
|
*/
|
|
update: async (uuid: string, data: UpdateOrganizationDto) => {
|
|
const response = await apiClient.patch(`/organizations/${uuid}`, data);
|
|
return response.data;
|
|
},
|
|
|
|
/**
|
|
* Delete organization
|
|
* DELETE /organizations/:uuid
|
|
*/
|
|
delete: async (uuid: string) => {
|
|
const response = await apiClient.delete(`/organizations/${uuid}`);
|
|
return response.data;
|
|
},
|
|
};
|