mirror of
https://github.com/Rhinemann/IoT-Systems.git
synced 2026-03-14 20:50:39 +02:00
52 lines
1.0 KiB
Python
52 lines
1.0 KiB
Python
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
|