switch orm to sqlmodel
This commit is contained in:
@@ -1,35 +1,43 @@
|
||||
from __future__ import annotations
|
||||
from typing import List, Optional
|
||||
from sqlmodel import Field, Relationship, Session, SQLModel
|
||||
from typing import List
|
||||
|
||||
from sqlalchemy import ForeignKey
|
||||
from sqlalchemy import Column, Integer, String, Boolean
|
||||
from sqlalchemy.orm import Mapped, mapped_column, DeclarativeBase, relationship
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
class Base(SQLModel):
|
||||
pass
|
||||
|
||||
class User(Base):
|
||||
__tablename__ = "users"
|
||||
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
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True, index=True)
|
||||
name: Mapped[str]
|
||||
email: Mapped[Optional[str]]
|
||||
password: Mapped[str]
|
||||
is_admin: Mapped[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 AccessAuthorization(Base): #parent
|
||||
__tablename__ = "access_authorizations"
|
||||
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)
|
||||
|
||||
name: Mapped[str] = mapped_column(primary_key=True, index=True)
|
||||
is_active: Mapped[bool]
|
||||
card_id: Mapped[List["Card"]] = relationship(back_populates="user")
|
||||
|
||||
class Card(Base): #child
|
||||
__tablename__ = "cards"
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True, index=True)
|
||||
uuid: Mapped[str] = mapped_column(index=True)
|
||||
user_id = mapped_column(ForeignKey("access_authorizations.name"))
|
||||
user: Mapped["AccessAuthorization"] = relationship(back_populates="card_id")
|
||||
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")
|
||||
Reference in New Issue
Block a user