39 lines
697 B
Python
39 lines
697 B
Python
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
|