from datetime import datetime from pydantic import BaseModel, field_validator class ProcessedAgentDataInDB(BaseModel): id: int road_state: str user_id: int x: float y: float z: float latitude: float longitude: float timestamp: datetime # FastAPI models class AccelerometerData(BaseModel): x: float y: float z: float class GpsData(BaseModel): latitude: float longitude: float class AgentData(BaseModel): user_id: int accelerometer: AccelerometerData gps: GpsData timestamp: datetime @classmethod @field_validator("timestamp", mode="before") def check_timestamp(cls, value): if isinstance(value, datetime): return value try: return datetime.fromisoformat(value) except (TypeError, ValueError): raise ValueError( "Invalid timestamp format. Expected ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ)." ) class ProcessedAgentData(BaseModel): road_state: str agent_data: AgentData