from datetime import datetime from typing import Optional from pydantic import BaseModel class VehicleBase(BaseModel): name: str type: str = "car" class VehicleCreate(VehicleBase): pass class VehicleUpdate(BaseModel): name: Optional[str] = None type: Optional[str] = None class VehicleResponse(VehicleBase): id: int created_at: datetime class Config: from_attributes = True class LastPosition(BaseModel): lat: float lon: float speed: float heading: float timestamp: datetime class VehicleWithPosition(VehicleResponse): last_position: Optional[LastPosition] = None status: str = "unknown" # moving, stopped, offline