50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
from typing import Optional, List, Dict, Any
|
|
from datetime import datetime
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
# Shared properties
|
|
class DeviceBase(BaseModel):
|
|
name: str
|
|
description: Optional[str] = None
|
|
model: Optional[str] = "SIM7000E"
|
|
firmware_version: Optional[str] = None
|
|
|
|
|
|
# Properties to receive on device creation
|
|
class DeviceCreate(DeviceBase):
|
|
id: str
|
|
|
|
|
|
# Properties to receive on device update
|
|
class DeviceUpdate(DeviceBase):
|
|
name: Optional[str] = None
|
|
is_active: Optional[bool] = None
|
|
battery_level: Optional[float] = None
|
|
signal_strength: Optional[int] = None
|
|
latitude: Optional[float] = None
|
|
longitude: Optional[float] = None
|
|
altitude: Optional[float] = None
|
|
|
|
|
|
# Properties shared by models stored in DB
|
|
class DeviceInDBBase(DeviceBase):
|
|
id: str
|
|
is_active: bool
|
|
last_seen: Optional[datetime] = None
|
|
battery_level: Optional[float] = None
|
|
signal_strength: Optional[int] = None
|
|
latitude: Optional[float] = None
|
|
longitude: Optional[float] = None
|
|
altitude: Optional[float] = None
|
|
created_at: datetime
|
|
updated_at: Optional[datetime] = None
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
|
|
# Properties to return to client
|
|
class DeviceResponse(DeviceInDBBase):
|
|
pass
|