init
This commit is contained in:
9
transport/backend/app/schemas/__init__.py
Normal file
9
transport/backend/app/schemas/__init__.py
Normal 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"
|
||||
]
|
||||
14
transport/backend/app/schemas/event.py
Normal file
14
transport/backend/app/schemas/event.py
Normal 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
|
||||
29
transport/backend/app/schemas/position.py
Normal file
29
transport/backend/app/schemas/position.py
Normal 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
|
||||
38
transport/backend/app/schemas/vehicle.py
Normal file
38
transport/backend/app/schemas/vehicle.py
Normal 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
|
||||
Reference in New Issue
Block a user