64 lines
1.3 KiB
Python
64 lines
1.3 KiB
Python
from typing import Any, List, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class IotEntityBase(BaseModel):
|
|
bluetooth_mac: str
|
|
description: str
|
|
|
|
class UserBase(BaseModel):
|
|
email: str
|
|
username: str
|
|
|
|
class IotEntityCreate(IotEntityBase):
|
|
pass
|
|
|
|
|
|
class UserCreate(UserBase):
|
|
password: str
|
|
|
|
class IotEntity(IotEntityBase):
|
|
id: int
|
|
description: str
|
|
bluetooth_mac: str
|
|
#authorized_users: List[User] = []
|
|
open_request: bool # Flag to open
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
class IotBluetoothMac(BaseModel):
|
|
bluetooth_mac : str
|
|
|
|
class User(UserBase):
|
|
id: int
|
|
is_active: bool
|
|
authorized_devices: List[IotEntity] = []
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
|
|
class Token(BaseModel):
|
|
access_token : str
|
|
token_type : str
|
|
|
|
class TokenData(BaseModel):
|
|
username : str
|
|
# Token can conatin information. But we are already recording this in a database
|
|
# for scalability.
|
|
|
|
class UserAllowForIotEntityRequestByID(BaseModel):
|
|
user_id: int
|
|
iot_entity_id: int
|
|
|
|
class UserAllowForIotEntityRequestByUsername(BaseModel):
|
|
username: str
|
|
description: str
|
|
|
|
class OpenDoorRequestBase(BaseModel):
|
|
username: str
|
|
bluetooth_mac: str
|
|
|
|
class OpenDoorRequestTime(OpenDoorRequestBase):
|
|
time_minutes: int |