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