This commit is contained in:
2025-12-18 21:13:49 +03:00
parent 84b934036b
commit 030af7ca83
45 changed files with 3106 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
from app.schemas.vehicle import VehicleCreate, VehicleUpdate, VehicleResponse, VehicleWithPosition
from app.schemas.position import PositionCreate, PositionResponse, PositionIngest
from app.schemas.event import EventResponse
__all__ = [
"VehicleCreate", "VehicleUpdate", "VehicleResponse", "VehicleWithPosition",
"PositionCreate", "PositionResponse", "PositionIngest",
"EventResponse"
]

View File

@@ -0,0 +1,14 @@
from datetime import datetime
from typing import Any
from pydantic import BaseModel
class EventResponse(BaseModel):
id: int
vehicle_id: int
timestamp: datetime
type: str
payload: dict[str, Any]
class Config:
from_attributes = True

View File

@@ -0,0 +1,29 @@
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
class PositionBase(BaseModel):
lat: float
lon: float
speed: float = 0.0
heading: float = 0.0
class PositionCreate(PositionBase):
vehicle_id: int
timestamp: Optional[datetime] = None
class PositionIngest(PositionBase):
vehicle_id: int
timestamp: Optional[datetime] = None
class PositionResponse(PositionBase):
id: int
vehicle_id: int
timestamp: datetime
class Config:
from_attributes = True

View File

@@ -0,0 +1,38 @@
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