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

@@ -16,120 +16,56 @@ class StatsSerializer(serializers.Serializer):
"""
# Core entity counts
total_parks = serializers.IntegerField(
help_text="Total number of parks in the database"
)
total_rides = serializers.IntegerField(
help_text="Total number of rides in the database"
)
total_manufacturers = serializers.IntegerField(
help_text="Total number of ride manufacturers"
)
total_operators = serializers.IntegerField(
help_text="Total number of park operators"
)
total_designers = serializers.IntegerField(
help_text="Total number of ride designers"
)
total_property_owners = serializers.IntegerField(
help_text="Total number of property owners"
)
total_roller_coasters = serializers.IntegerField(
help_text="Total number of roller coasters with detailed stats"
)
total_parks = serializers.IntegerField(help_text="Total number of parks in the database")
total_rides = serializers.IntegerField(help_text="Total number of rides in the database")
total_manufacturers = serializers.IntegerField(help_text="Total number of ride manufacturers")
total_operators = serializers.IntegerField(help_text="Total number of park operators")
total_designers = serializers.IntegerField(help_text="Total number of ride designers")
total_property_owners = serializers.IntegerField(help_text="Total number of property owners")
total_roller_coasters = serializers.IntegerField(help_text="Total number of roller coasters with detailed stats")
# Photo counts
total_photos = serializers.IntegerField(
help_text="Total number of photos (parks + rides combined)"
)
total_park_photos = serializers.IntegerField(
help_text="Total number of park photos"
)
total_ride_photos = serializers.IntegerField(
help_text="Total number of ride photos"
)
total_photos = serializers.IntegerField(help_text="Total number of photos (parks + rides combined)")
total_park_photos = serializers.IntegerField(help_text="Total number of park photos")
total_ride_photos = serializers.IntegerField(help_text="Total number of ride photos")
# Review counts
total_reviews = serializers.IntegerField(
help_text="Total number of reviews (parks + rides)"
)
total_park_reviews = serializers.IntegerField(
help_text="Total number of park reviews"
)
total_ride_reviews = serializers.IntegerField(
help_text="Total number of ride reviews"
)
total_reviews = serializers.IntegerField(help_text="Total number of reviews (parks + rides)")
total_park_reviews = serializers.IntegerField(help_text="Total number of park reviews")
total_ride_reviews = serializers.IntegerField(help_text="Total number of ride reviews")
# Ride category counts (optional fields since they depend on data)
roller_coasters = serializers.IntegerField(
required=False, help_text="Number of rides categorized as roller coasters"
)
dark_rides = serializers.IntegerField(
required=False, help_text="Number of rides categorized as dark rides"
)
flat_rides = serializers.IntegerField(
required=False, help_text="Number of rides categorized as flat rides"
)
water_rides = serializers.IntegerField(
required=False, help_text="Number of rides categorized as water rides"
)
dark_rides = serializers.IntegerField(required=False, help_text="Number of rides categorized as dark rides")
flat_rides = serializers.IntegerField(required=False, help_text="Number of rides categorized as flat rides")
water_rides = serializers.IntegerField(required=False, help_text="Number of rides categorized as water rides")
transport_rides = serializers.IntegerField(
required=False, help_text="Number of rides categorized as transport rides"
)
other_rides = serializers.IntegerField(
required=False, help_text="Number of rides categorized as other"
)
other_rides = serializers.IntegerField(required=False, help_text="Number of rides categorized as other")
# Park status counts (optional fields since they depend on data)
operating_parks = serializers.IntegerField(
required=False, help_text="Number of currently operating parks"
)
temporarily_closed_parks = serializers.IntegerField(
required=False, help_text="Number of temporarily closed parks"
)
permanently_closed_parks = serializers.IntegerField(
required=False, help_text="Number of permanently closed parks"
)
under_construction_parks = serializers.IntegerField(
required=False, help_text="Number of parks under construction"
)
demolished_parks = serializers.IntegerField(
required=False, help_text="Number of demolished parks"
)
relocated_parks = serializers.IntegerField(
required=False, help_text="Number of relocated parks"
)
operating_parks = serializers.IntegerField(required=False, help_text="Number of currently operating parks")
temporarily_closed_parks = serializers.IntegerField(required=False, help_text="Number of temporarily closed parks")
permanently_closed_parks = serializers.IntegerField(required=False, help_text="Number of permanently closed parks")
under_construction_parks = serializers.IntegerField(required=False, help_text="Number of parks under construction")
demolished_parks = serializers.IntegerField(required=False, help_text="Number of demolished parks")
relocated_parks = serializers.IntegerField(required=False, help_text="Number of relocated parks")
# Ride status counts (optional fields since they depend on data)
operating_rides = serializers.IntegerField(
required=False, help_text="Number of currently operating rides"
)
temporarily_closed_rides = serializers.IntegerField(
required=False, help_text="Number of temporarily closed rides"
)
sbno_rides = serializers.IntegerField(
required=False, help_text="Number of rides standing but not operating"
)
closing_rides = serializers.IntegerField(
required=False, help_text="Number of rides in the process of closing"
)
permanently_closed_rides = serializers.IntegerField(
required=False, help_text="Number of permanently closed rides"
)
under_construction_rides = serializers.IntegerField(
required=False, help_text="Number of rides under construction"
)
demolished_rides = serializers.IntegerField(
required=False, help_text="Number of demolished rides"
)
relocated_rides = serializers.IntegerField(
required=False, help_text="Number of relocated rides"
)
operating_rides = serializers.IntegerField(required=False, help_text="Number of currently operating rides")
temporarily_closed_rides = serializers.IntegerField(required=False, help_text="Number of temporarily closed rides")
sbno_rides = serializers.IntegerField(required=False, help_text="Number of rides standing but not operating")
closing_rides = serializers.IntegerField(required=False, help_text="Number of rides in the process of closing")
permanently_closed_rides = serializers.IntegerField(required=False, help_text="Number of permanently closed rides")
under_construction_rides = serializers.IntegerField(required=False, help_text="Number of rides under construction")
demolished_rides = serializers.IntegerField(required=False, help_text="Number of demolished rides")
relocated_rides = serializers.IntegerField(required=False, help_text="Number of relocated rides")
# Metadata
last_updated = serializers.CharField(
help_text="ISO timestamp when these statistics were last calculated"
)
last_updated = serializers.CharField(help_text="ISO timestamp when these statistics were last calculated")
relative_last_updated = serializers.CharField(
help_text="Human-readable relative time since last update (e.g., '2 minutes ago')"
)