59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
import axiosClient from "../axios/axios";
|
|
import {
|
|
Package, PackageCreate, PackageUpdate,
|
|
PaginatedResponse, PaginationParams
|
|
} from "@/types";
|
|
|
|
/**
|
|
* Package Service
|
|
*/
|
|
export const packageService = {
|
|
/**
|
|
* Fetch all packages
|
|
*/
|
|
getPackages: async (params?: PaginationParams): Promise<PaginatedResponse<Package>> => {
|
|
const skip = params?.skip ?? 0;
|
|
const limit = params?.limit ?? 100;
|
|
const response = await axiosClient.get<PaginatedResponse<Package>>(`/packages/`, {
|
|
params: { skip, limit }
|
|
});
|
|
return response.data;
|
|
},
|
|
|
|
/**
|
|
* Fetch packages filtered by project ID
|
|
*/
|
|
getPackagesByProject: async (projectId: string, params?: PaginationParams): Promise<PaginatedResponse<Package>> => {
|
|
const skip = params?.skip ?? 0;
|
|
const limit = params?.limit ?? 100;
|
|
const response = await axiosClient.get<PaginatedResponse<Package>>(`/packages/`, {
|
|
params: { project_id: projectId, skip, limit }
|
|
});
|
|
return response.data;
|
|
},
|
|
|
|
/**
|
|
* Create a new package
|
|
*/
|
|
createPackage: async (data: PackageCreate): Promise<Package> => {
|
|
const response = await axiosClient.post<Package>("/packages/", data);
|
|
return response.data;
|
|
},
|
|
|
|
/**
|
|
* Update an existing package
|
|
*/
|
|
updatePackage: async (packageId: string, data: PackageUpdate): Promise<Package> => {
|
|
const response = await axiosClient.put<Package>(`/packages/${packageId}`, data);
|
|
return response.data;
|
|
},
|
|
|
|
/**
|
|
* Delete a package
|
|
*/
|
|
deletePackage: async (packageId: string): Promise<{ message: string }> => {
|
|
const response = await axiosClient.delete<{ message: string }>(`/packages/${packageId}`);
|
|
return response.data;
|
|
}
|
|
};
|