mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 06:11:07 -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.
60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
"""Comprehensive URL routes for Parks domain (API v1).
|
|
|
|
This file exposes a maximal set of "full-fat" endpoints implemented in
|
|
`apps.api.v1.parks.park_views` and `apps.api.v1.parks.views`. Endpoints are
|
|
intentionally expansive to match the rides API functionality and provide
|
|
complete feature parity for parks management.
|
|
"""
|
|
|
|
from django.urls import path, include
|
|
from rest_framework.routers import DefaultRouter
|
|
|
|
from .park_views import (
|
|
ParkListCreateAPIView,
|
|
ParkDetailAPIView,
|
|
FilterOptionsAPIView,
|
|
CompanySearchAPIView,
|
|
ParkSearchSuggestionsAPIView,
|
|
ParkImageSettingsAPIView,
|
|
)
|
|
from .views import ParkPhotoViewSet, HybridParkAPIView, ParkFilterMetadataAPIView
|
|
|
|
# Create router for nested photo endpoints
|
|
router = DefaultRouter()
|
|
router.register(r"", ParkPhotoViewSet, basename="park-photo")
|
|
|
|
app_name = "api_v1_parks"
|
|
|
|
urlpatterns = [
|
|
# Core list/create endpoints
|
|
path("", ParkListCreateAPIView.as_view(), name="park-list-create"),
|
|
|
|
# Hybrid filtering endpoints
|
|
path("hybrid/", HybridParkAPIView.as_view(), name="park-hybrid-list"),
|
|
path("hybrid/filter-metadata/", ParkFilterMetadataAPIView.as_view(), name="park-hybrid-filter-metadata"),
|
|
|
|
# Filter options
|
|
path("filter-options/", FilterOptionsAPIView.as_view(), name="park-filter-options"),
|
|
# Autocomplete / suggestion endpoints
|
|
path(
|
|
"search/companies/",
|
|
CompanySearchAPIView.as_view(),
|
|
name="park-search-companies",
|
|
),
|
|
path(
|
|
"search-suggestions/",
|
|
ParkSearchSuggestionsAPIView.as_view(),
|
|
name="park-search-suggestions",
|
|
),
|
|
# Detail and action endpoints - supports both ID and slug
|
|
path("<str:pk>/", ParkDetailAPIView.as_view(), name="park-detail"),
|
|
# Park image settings endpoint
|
|
path(
|
|
"<int:pk>/image-settings/",
|
|
ParkImageSettingsAPIView.as_view(),
|
|
name="park-image-settings",
|
|
),
|
|
# Park photo endpoints - domain-specific photo management
|
|
path("<int:park_pk>/photos/", include(router.urls)),
|
|
]
|