import axiosClient from '../axios/axios'; import { Chainage, ChainageCreate, ChainageUpdate, PaginatedResponse, PaginationParams, } from '@/types'; const CHAINAGES_ENDPOINT = 'biz/api/v1/chainages'; /** * Chainage Service */ export const chainageService = { /** * Fetch all chainages */ getChainages: async (params?: PaginationParams): Promise> => { const skip = params?.skip ?? 0; const limit = params?.limit ?? 100; const response = await axiosClient.get>(CHAINAGES_ENDPOINT, { params: { skip, limit }, }); return response.data; }, /** * Fetch chainages filtered by package ID */ getChainagesByPackage: async ( packageId: string, params?: PaginationParams, ): Promise> => { const skip = params?.skip ?? 0; const limit = params?.limit ?? 100; const response = await axiosClient.get>(CHAINAGES_ENDPOINT, { params: { package_id: packageId, skip, limit }, }); return response.data; }, /** * Create a new chainage */ createChainage: async (data: ChainageCreate): Promise => { const response = await axiosClient.post(CHAINAGES_ENDPOINT, data); return response.data; }, /** * Update an existing chainage */ updateChainage: async (chainageId: string, data: ChainageUpdate): Promise => { const response = await axiosClient.put(`${CHAINAGES_ENDPOINT}/${chainageId}`, data); return response.data; }, /** * Delete a chainage */ deleteChainage: async (chainageId: string): Promise<{ message: string }> => { const response = await axiosClient.delete<{ message: string }>( `${CHAINAGES_ENDPOINT}/${chainageId}`, ); return response.data; }, };