feat: Implement initial schema and add various API, service, and management command enhancements across the application.

This commit is contained in:
pacnpal
2026-01-01 15:13:01 -05:00
parent c95f99ca10
commit b243b17af7
413 changed files with 11164 additions and 17433 deletions

View File

@@ -13,9 +13,7 @@ from .choices import RIDE_CATEGORIES
from .models import Ride, RideModel, RideReview
def ride_list_for_display(
*, filters: dict[str, Any] | None = None
) -> QuerySet[Ride]:
def ride_list_for_display(*, filters: dict[str, Any] | None = None) -> QuerySet[Ride]:
"""
Get rides optimized for list display with related data.
@@ -85,9 +83,7 @@ def ride_detail_optimized(*, slug: str, park_slug: str) -> Ride:
"park__location",
Prefetch(
"reviews",
queryset=RideReview.objects.select_related("user").filter(
is_published=True
),
queryset=RideReview.objects.select_related("user").filter(is_published=True),
),
"photos",
)
@@ -171,9 +167,7 @@ def rides_in_park(*, park_slug: str) -> QuerySet[Ride]:
)
def rides_near_location(
*, point: Point, distance_km: float = 50, limit: int = 10
) -> QuerySet[Ride]:
def rides_near_location(*, point: Point, distance_km: float = 50, limit: int = 10) -> QuerySet[Ride]:
"""
Get rides near a specific geographic location.
@@ -227,9 +221,7 @@ def ride_search_autocomplete(*, query: str, limit: int = 10) -> QuerySet[Ride]:
"""
return (
Ride.objects.filter(
Q(name__icontains=query)
| Q(park__name__icontains=query)
| Q(manufacturer__name__icontains=query)
Q(name__icontains=query) | Q(park__name__icontains=query) | Q(manufacturer__name__icontains=query)
)
.select_related("park", "manufacturer")
.prefetch_related("park__location")
@@ -254,16 +246,10 @@ def rides_with_recent_reviews(*, days: int = 30) -> QuerySet[Ride]:
cutoff_date = timezone.now() - timedelta(days=days)
return (
Ride.objects.filter(
reviews__created_at__gte=cutoff_date, reviews__is_published=True
)
Ride.objects.filter(reviews__created_at__gte=cutoff_date, reviews__is_published=True)
.select_related("park", "manufacturer")
.prefetch_related("park__location")
.annotate(
recent_review_count=Count(
"reviews", filter=Q(reviews__created_at__gte=cutoff_date)
)
)
.annotate(recent_review_count=Count("reviews", filter=Q(reviews__created_at__gte=cutoff_date)))
.order_by("-recent_review_count")
.distinct()
)