mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 08:51:09 -05:00
Implement hybrid filtering strategy for parks and rides
- Added comprehensive documentation for hybrid filtering implementation, including architecture, API endpoints, performance characteristics, and usage examples. - Developed a hybrid pagination and client-side filtering recommendation, detailing server-side responsibilities and client-side logic. - Created a test script for hybrid filtering endpoints, covering various test cases including basic filtering, search functionality, pagination, and edge cases.
This commit is contained in:
@@ -200,6 +200,13 @@ import type {
|
||||
SearchFilters,
|
||||
BoundingBox,
|
||||
|
||||
// Hybrid Rides Filtering Types
|
||||
HybridRideData,
|
||||
HybridRideFilterMetadata,
|
||||
HybridRideResponse,
|
||||
HybridRideFilters,
|
||||
HybridRideProgressiveResponse,
|
||||
|
||||
// Queue Routing Response Types
|
||||
QueueRoutingResponse,
|
||||
AutoApprovedResponse,
|
||||
@@ -853,6 +860,42 @@ export const parksApi = {
|
||||
// ============================================================================
|
||||
|
||||
export const ridesApi = {
|
||||
// Hybrid filtering (recommended)
|
||||
async getHybridRides(filters?: HybridRideFilters): Promise<HybridRideResponse> {
|
||||
const searchParams = new URLSearchParams();
|
||||
|
||||
if (filters) {
|
||||
Object.entries(filters).forEach(([key, value]) => {
|
||||
if (value !== undefined && value !== null && value !== '') {
|
||||
searchParams.append(key, value.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const query = searchParams.toString();
|
||||
return makeRequest<HybridRideResponse>(`/rides/hybrid/${query ? `?${query}` : ''}`);
|
||||
},
|
||||
|
||||
async getHybridRidesProgressive(filters?: HybridRideFilters & { offset: number }): Promise<HybridRideProgressiveResponse> {
|
||||
const searchParams = new URLSearchParams();
|
||||
|
||||
if (filters) {
|
||||
Object.entries(filters).forEach(([key, value]) => {
|
||||
if (value !== undefined && value !== null && value !== '') {
|
||||
searchParams.append(key, value.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const query = searchParams.toString();
|
||||
return makeRequest<HybridRideProgressiveResponse>(`/rides/hybrid/progressive/${query ? `?${query}` : ''}`);
|
||||
},
|
||||
|
||||
async getHybridRideFilterMetadata(): Promise<HybridRideFilterMetadata> {
|
||||
return makeRequest<HybridRideFilterMetadata>('/rides/hybrid/filter-metadata/');
|
||||
},
|
||||
|
||||
// Legacy rides listing
|
||||
async getRides(filters?: SearchFilters): Promise<RideListResponse> {
|
||||
const searchParams = new URLSearchParams();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user