Files
gatekeeper/app/model/dbModels.py
2026-04-18 23:40:44 +02:00

43 lines
1.7 KiB
Python

from sqlmodel import Field, Relationship, Session, SQLModel
from typing import List
class Base(SQLModel):
pass
class User(Base, table=True):
id: int | None = Field(default=None, primary_key=True)
name: str = Field(index=True)
email: str | None = None
password: str
is_admin: bool
class AaGroupLink(Base, table=True):
group_id: int | None = Field(default=None, foreign_key="group.id", primary_key=True)
accessauth_id: int | None = Field(default=None, foreign_key="accessauthorization.id", primary_key=True)
class Group(Base, table=True):
id: int | None = Field(default=None, primary_key=True)
name: str = Field(primary_key=True)
cards: List["Card"] = Relationship(back_populates="group")
accessauths: List["AccessAuthorization"] = Relationship(back_populates="groups", link_model=AaGroupLink)
class AccessAuthorization(Base, table=True):
id: int | None = Field(default=None, primary_key=True)
name: str = Field(index=True)
is_active: bool
groups: list["Group"] = Relationship(back_populates="accessauths", link_model=AaGroupLink)
timetables: list["Timetable"] = Relationship(back_populates="accessauth")
class Card(Base, table=True):
id: int | None = Field(default=None, primary_key=True)
uuid: str
group_id: int | None = Field(default=None, foreign_key="group.id")
group: Group | None = Relationship(back_populates="cards")
class Timetable(Base, table=True):
id: int | None = Field(default=None, primary_key=True)
weekday: int
starttime: str
duration: int
accessauth_id: int | None = Field(default=None, foreign_key="accessauthorization.id")
accessauth: AccessAuthorization | None = Relationship(back_populates="timetables")