"""
Rating Schemas
Rating and review management
"""
from typing import Optional, List
from pydantic import BaseModel, Field
from datetime import datetime


class RatingCreate(BaseModel):
    """Submit rating for a ride"""
    ride_id: int
    rating: float = Field(..., ge=1, le=5, description="Rating from 1 to 5")
    review: Optional[str] = Field(None, max_length=500)
    tags: Optional[List[str]] = Field(None, description="Rating tags")
    tip_amount: Optional[int] = Field(None, ge=0, description="Tip in cents")


class RatingResponse(BaseModel):
    """Rating details response"""
    id: int
    ride_id: int
    
    # Passenger's rating for driver
    driver_rating: Optional[float] = None
    driver_review: Optional[str] = None
    driver_rating_tags: Optional[List[str]] = None
    
    # Driver's rating for passenger
    passenger_rating: Optional[float] = None
    passenger_review: Optional[str] = None
    passenger_rating_tags: Optional[List[str]] = None
    
    tip_amount: int
    created_at: datetime
    
    class Config:
        from_attributes = True


class RatingStatsResponse(BaseModel):
    """Rating statistics"""
    average_rating: float
    total_ratings: int
    rating_distribution: dict  # {1: count, 2: count, ...}
    recent_reviews: List[dict]
