Newer
Older

Robert Goldmann
committed
from enum import Enum

Robert Goldmann
committed
from pydantic import BaseModel, Field
from typing import Optional
class Status(BaseModel):
message: str
class Version(BaseModel):
name: str
code: int
date: str
class Config:
schema_extra = {
'example': {
'name': 'v1.0.0',
'code': 1,
'date': '28.12.20',
}
}

Robert Goldmann
committed
class DatabaseInfo(BaseModel):
number_of_measurements: int
size_on_disk_in_mb: int
class Config:
schema_extra = {
'example': {
'number_of_measurements': 1000,
'size_on_disk_in_mb': 14
}
}

Robert Goldmann
committed
class DatabaseCleanupStatus(str, Enum):
UNDEFINED = 'UNDEFINED'
RUNNING = 'RUNNING'
FINISHED = 'FINISHED'
class DatabaseCleanupInfo(BaseModel):

Robert Goldmann
committed
status: DatabaseCleanupStatus
before: DatabaseInfo = None
after: DatabaseInfo = None
difference: DatabaseInfo = None
class MinMax(BaseModel):
min: float = None
max: float = None
# ===== measurement =====
class Measurement(BaseModel):
id: int
value: str
timestamp: str

Robert Goldmann
committed
sensor_id: int
class Config:
orm_mode = True
class MeasurementCreate(BaseModel):

Robert Goldmann
committed
value: str = Field(..., min_length=1)
timestamp: Optional[str]

Robert Goldmann
committed
sensor_id: int
class MeasurementUpdate(BaseModel):
value: str = Field(..., min_length=1)
class SensorBase(BaseModel):
id: int
name: str
type: str
class Config:
orm_mode = True

Robert Goldmann
committed
name: str = Field(..., min_length=1)
type: str = Field(..., min_length=1)

Robert Goldmann
committed
device_id: int
class SensorUpdate(BaseModel):

Robert Goldmann
committed
name: str = Field(..., min_length=1)
type: str = Field(..., min_length=1)
class Sensor(SensorBase):

Robert Goldmann
committed
device_id: int
class Config:
orm_mode = True
class Device(BaseModel):
id: int
name: str
sensors: List[SensorBase]
class Config:
orm_mode = True
class DeviceCreate(BaseModel):

Robert Goldmann
committed
name: str = Field(..., min_length=1)

Robert Goldmann
committed
# ===== send multiple measurements =====
class SensorValue(BaseModel):
name: str
type: str
value: str
class MultipleMeasurements(BaseModel):
deviceName: str
sensors: List[SensorValue]