45 lines
766 B
Python
45 lines
766 B
Python
from typing import *
|
|
from uuid import UUID
|
|
from enum import Enum
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class FrontendToken(BaseModel):
|
|
type: Literal["frontend"]
|
|
|
|
|
|
class ComputerToken(BaseModel):
|
|
type: Literal["computer"]
|
|
uuid: UUID
|
|
|
|
|
|
ComputerType = Literal["computer", "turtle", "pocket"]
|
|
|
|
|
|
class Computer(BaseModel):
|
|
type: ComputerType
|
|
is_advanced: bool
|
|
uuid: UUID
|
|
label: Optional[str]
|
|
group: str
|
|
|
|
# uUiD iS nOt JsOn SeRiAlIzAbLe
|
|
def dict(self):
|
|
data = super().dict()
|
|
data["uuid"] = str(data["uuid"])
|
|
return data
|
|
|
|
|
|
class DynamicComputerState(BaseModel):
|
|
is_online: bool
|
|
|
|
|
|
class StateItem(BaseModel):
|
|
static: Computer
|
|
dynamic: DynamicComputerState
|
|
|
|
|
|
class State:
|
|
computers: List[StateItem]
|