"""Bus stop schemas.""" from pydantic import BaseModel, field_serializer from typing import Optional from datetime import datetime from uuid import UUID from app.models.bus_stop import StopType class BusStopBase(BaseModel): """Base bus stop schema.""" name: str latitude: float longitude: float city: str address: Optional[str] = None stop_type: StopType = StopType.REGULAR has_shelter: bool = False has_seating: bool = False is_accessible: bool = False stop_order: Optional[int] = None class BusStopCreate(BusStopBase): """Schema for creating a bus stop.""" pass class BusStopUpdate(BaseModel): """Schema for updating a bus stop.""" name: Optional[str] = None latitude: Optional[float] = None longitude: Optional[float] = None city: Optional[str] = None address: Optional[str] = None stop_type: Optional[StopType] = None has_shelter: Optional[bool] = None has_seating: Optional[bool] = None is_accessible: Optional[bool] = None class BusStopResponse(BusStopBase): """Schema for bus stop response.""" id: UUID created_at: Optional[datetime] = None updated_at: Optional[datetime] = None @field_serializer('id') def serialize_id(self, value: UUID) -> str: return str(value) class Config: from_attributes = True