mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 12:51:09 -05:00
- Implemented PrimeProgress component with support for labels, helper text, and various styles (size, variant, color). - Created PrimeSelect component with dropdown functionality, custom templates, and validation states. - Developed PrimeSkeleton component for loading placeholders with different shapes and animations. - Updated index.ts to export new components for easy import. - Enhanced PrimeVueTest.vue to include tests for new components and their functionalities. - Introduced a custom ThrillWiki theme for PrimeVue with tailored color schemes and component styles. - Added ambient type declarations for various components to improve TypeScript support.
86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
"""
|
|
Search domain serializers for ThrillWiki API v1.
|
|
|
|
This module contains serializers for entity search, location search,
|
|
and other search functionality.
|
|
"""
|
|
|
|
from rest_framework import serializers
|
|
|
|
|
|
# === CORE ENTITY SEARCH SERIALIZERS ===
|
|
|
|
|
|
class EntitySearchInputSerializer(serializers.Serializer):
|
|
"""Input serializer for entity search requests."""
|
|
|
|
query = serializers.CharField(max_length=255, help_text="Search query string")
|
|
entity_types = serializers.ListField(
|
|
child=serializers.ChoiceField(choices=["park", "ride", "company", "user"]),
|
|
required=False,
|
|
help_text="Types of entities to search for",
|
|
)
|
|
limit = serializers.IntegerField(
|
|
default=10,
|
|
min_value=1,
|
|
max_value=50,
|
|
help_text="Maximum number of results to return",
|
|
)
|
|
|
|
|
|
class EntitySearchResultSerializer(serializers.Serializer):
|
|
"""Serializer for individual entity search results."""
|
|
|
|
id = serializers.IntegerField()
|
|
name = serializers.CharField()
|
|
slug = serializers.CharField()
|
|
type = serializers.CharField()
|
|
description = serializers.CharField()
|
|
relevance_score = serializers.FloatField()
|
|
|
|
# Context-specific info — renamed to avoid overriding Serializer.context
|
|
context_info = serializers.JSONField(
|
|
help_text="Additional context based on entity type"
|
|
)
|
|
|
|
|
|
class EntitySearchOutputSerializer(serializers.Serializer):
|
|
"""Output serializer for entity search results."""
|
|
|
|
query = serializers.CharField()
|
|
total_results = serializers.IntegerField()
|
|
results = EntitySearchResultSerializer(many=True)
|
|
search_time_ms = serializers.FloatField()
|
|
|
|
|
|
# === LOCATION SEARCH SERIALIZERS ===
|
|
|
|
|
|
class LocationSearchResultSerializer(serializers.Serializer):
|
|
"""Serializer for location search results."""
|
|
|
|
display_name = serializers.CharField()
|
|
lat = serializers.FloatField()
|
|
lon = serializers.FloatField()
|
|
type = serializers.CharField()
|
|
importance = serializers.FloatField()
|
|
address = serializers.JSONField()
|
|
|
|
|
|
class LocationSearchOutputSerializer(serializers.Serializer):
|
|
"""Output serializer for location search."""
|
|
|
|
results = LocationSearchResultSerializer(many=True)
|
|
query = serializers.CharField()
|
|
count = serializers.IntegerField()
|
|
|
|
|
|
class ReverseGeocodeOutputSerializer(serializers.Serializer):
|
|
"""Output serializer for reverse geocoding."""
|
|
|
|
display_name = serializers.CharField()
|
|
lat = serializers.FloatField()
|
|
lon = serializers.FloatField()
|
|
address = serializers.JSONField()
|
|
type = serializers.CharField()
|