refactor: modularize API client by splitting resources into individual files and standardizing HTTP request handling.
This commit is contained in:
60
apps/frontend/src/lib/api/resources/bookings.ts
Normal file
60
apps/frontend/src/lib/api/resources/bookings.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import type {
|
||||
AdminBooking,
|
||||
CreateAdminBookingInput,
|
||||
CreatePublicBookingInput,
|
||||
PublicAvailabilityResponse,
|
||||
PublicBooking,
|
||||
PublicBookingConfirmation,
|
||||
UpdateAdminBookingStatusInput,
|
||||
} from '@repo/api-contract';
|
||||
import { http } from '../http';
|
||||
|
||||
export async function getAvailability(
|
||||
complexSlug: string,
|
||||
params: { date: string; sportId?: string }
|
||||
) {
|
||||
const response = await http.get<PublicAvailabilityResponse>(
|
||||
`/api/public-bookings/complex/${complexSlug}/availability`,
|
||||
{ params }
|
||||
);
|
||||
return response.data;
|
||||
}
|
||||
|
||||
export async function createPublic(complexSlug: string, payload: CreatePublicBookingInput) {
|
||||
const response = await http.post<PublicBooking>(
|
||||
`/api/public-bookings/complex/${complexSlug}`,
|
||||
payload
|
||||
);
|
||||
return response.data;
|
||||
}
|
||||
|
||||
export async function getConfirmation(complexSlug: string, bookingCode: string) {
|
||||
const response = await http.get<PublicBookingConfirmation>(
|
||||
`/api/public-bookings/complex/${complexSlug}/confirmation/${bookingCode}`
|
||||
);
|
||||
return response.data;
|
||||
}
|
||||
|
||||
export async function listByComplex(complexId: string, params: { fromDate: string }) {
|
||||
const response = await http.get<{ bookings: AdminBooking[] }>(
|
||||
`/api/admin-bookings/complex/${complexId}`,
|
||||
{ params }
|
||||
);
|
||||
return response.data;
|
||||
}
|
||||
|
||||
export async function createAdmin(complexId: string, payload: CreateAdminBookingInput) {
|
||||
const response = await http.post<AdminBooking>(
|
||||
`/api/admin-bookings/complex/${complexId}`,
|
||||
payload
|
||||
);
|
||||
return response.data;
|
||||
}
|
||||
|
||||
export async function updateStatus(bookingId: string, payload: UpdateAdminBookingStatusInput) {
|
||||
const response = await http.patch<AdminBooking>(
|
||||
`/api/admin-bookings/${bookingId}/status`,
|
||||
payload
|
||||
);
|
||||
return response.data;
|
||||
}
|
||||
Reference in New Issue
Block a user