mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 07:51:09 -05:00
- 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.
75 lines
2.5 KiB
Python
75 lines
2.5 KiB
Python
"""Comprehensive URL routes for Rides domain (API v1).
|
|
|
|
This file exposes a maximal set of "full-fat" endpoints implemented in
|
|
`apps.api.v1.rides.views`. Endpoints are intentionally expansive (aliases,
|
|
bulk operations, action endpoints, analytics, import/export) so the backend
|
|
surface matches the frontend's expectations. Implementations for specific
|
|
actions (bulk, publish, export, import, recommendations) should be added
|
|
to the views module when business logic is available.
|
|
"""
|
|
|
|
from django.urls import path, include
|
|
from rest_framework.routers import DefaultRouter
|
|
|
|
from .views import (
|
|
RideListCreateAPIView,
|
|
RideDetailAPIView,
|
|
FilterOptionsAPIView,
|
|
CompanySearchAPIView,
|
|
RideModelSearchAPIView,
|
|
RideSearchSuggestionsAPIView,
|
|
RideImageSettingsAPIView,
|
|
HybridRideAPIView,
|
|
RideFilterMetadataAPIView,
|
|
)
|
|
from .photo_views import RidePhotoViewSet
|
|
|
|
# Create router for nested photo endpoints
|
|
router = DefaultRouter()
|
|
router.register(r"", RidePhotoViewSet, basename="ridephoto")
|
|
|
|
app_name = "api_v1_rides"
|
|
|
|
urlpatterns = [
|
|
# Core list/create endpoints
|
|
path("", RideListCreateAPIView.as_view(), name="ride-list-create"),
|
|
|
|
# Hybrid filtering endpoints
|
|
path("hybrid/", HybridRideAPIView.as_view(), name="ride-hybrid-filtering"),
|
|
path("hybrid/filter-metadata/", RideFilterMetadataAPIView.as_view(), name="ride-hybrid-filter-metadata"),
|
|
|
|
# Filter options
|
|
path("filter-options/", FilterOptionsAPIView.as_view(), name="ride-filter-options"),
|
|
# Autocomplete / suggestion endpoints
|
|
path(
|
|
"search/companies/",
|
|
CompanySearchAPIView.as_view(),
|
|
name="ride-search-companies",
|
|
),
|
|
path(
|
|
"search/ride-models/",
|
|
RideModelSearchAPIView.as_view(),
|
|
name="ride-search-ride-models",
|
|
),
|
|
path(
|
|
"search-suggestions/",
|
|
RideSearchSuggestionsAPIView.as_view(),
|
|
name="ride-search-suggestions",
|
|
),
|
|
# Ride model management endpoints - nested under rides/manufacturers
|
|
path(
|
|
"manufacturers/<slug:manufacturer_slug>/",
|
|
include("apps.api.v1.rides.manufacturers.urls"),
|
|
),
|
|
# Detail and action endpoints
|
|
path("<int:pk>/", RideDetailAPIView.as_view(), name="ride-detail"),
|
|
# Ride image settings endpoint
|
|
path(
|
|
"<int:pk>/image-settings/",
|
|
RideImageSettingsAPIView.as_view(),
|
|
name="ride-image-settings",
|
|
),
|
|
# Ride photo endpoints - domain-specific photo management
|
|
path("<int:ride_pk>/photos/", include(router.urls)),
|
|
]
|