signcontrol/db.py

65 lines
1.5 KiB
Python

from sqlmodel import Field, Session, SQLModel, create_engine, select
from netbrite import Colors, Fonts, Message, Priorities, ScrollSpeeds
class BaseZone(SQLModel, table=True, echo=True):
id: int | None = Field(default=None, primary_key=True)
x: int
y: int
width: int
height: int
scroll_speed: ScrollSpeeds
pause_duration: int
volume: int
default_font: Fonts
default_color: Colors
default_message: int | None = Field(foreign_key="apimessages.id")
netbrite_device_id: int = Field(foreign_key="apinetbritedevice.id")
class APIGetZone(SQLModel, table=True, echo=True):
id: int | None = Field(default=None, primary_key=True)
x: int
y: int
width: int
height: int
scroll_speed: ScrollSpeeds
pause_duration: int
volume: int
default_font: Fonts
default_color: Colors
default_message: Message | None
class APIMessages(SQLModel, table=True, echo=True):
id: int | None = Field(default=None, primary_key=True)
activation_delay: int
display_delay: int
display_repeat: int
priority: Priorities
text: str
ttl: int
class BaseNetBriteDevice(SQLModel, table=True, echo=True):
id: int | None = Field(default=None, primary_key=True)
address: str = Field(unique=True)
port: int = 700
class APIAddNetBriteDevice(SQLModel, table=False):
address: str
port: int = 700
class APIGetNetBriteDevice(SQLModel, table=False):
address: str
port: int = 700
connected: bool
zones: dict[str, APIGetZone]