Finish sqlmodel migration

- merge card.py, user.py and dbmodels.py into models.py
- deduplicate
- change responsemodels in the manager functions
- correct inports
This commit is contained in:
2026-04-23 22:41:48 +02:00
parent ba0f036535
commit 22e57996c2
7 changed files with 83 additions and 87 deletions

View File

@@ -1,17 +0,0 @@
from pydantic import BaseModel
class CardBase(BaseModel):
id: int
uuid: str
user_id: str
class AccessAuthorizationBase(BaseModel):
name: str
is_active: bool = True
class AccessAuthorizationCreate(AccessAuthorizationBase):
pass
class AccessAuthorization(AccessAuthorizationBase):
class Config:
from_attributes = True

View File

@@ -1,43 +0,0 @@
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")

72
app/model/models.py Normal file
View File

@@ -0,0 +1,72 @@
from sqlmodel import Field, Relationship, Session, SQLModel
from typing import List
class Base(SQLModel):
pass
#### User
class UserBase(Base):
name: str = Field(index=True)
email: str | None = None
is_admin: bool = False
class UserResponse(UserBase):
id: int
class UserCreate(UserBase):
password: str
class UserDB(UserBase, table=True):
id: int | None = Field(default=None, primary_key=True)
password: str
#### Special
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)
#### Group
class GroupBase(Base):
name: str = Field(index=True)
class GroupDB(GroupBase, table=True):
id: int | None = Field(default=None, primary_key=True)
cards: List["Card"] = Relationship(back_populates="group")
accessauths: List["AccessAuthorizationBase"] = Relationship(back_populates="groups", link_model=AaGroupLink)
class GroupResponse(GroupBase):
id: int
cards: List["Card"]
accessauths: List["AccessAuthorizationBase"]
#### AccessAuthorization
class AccessAuthorizationBase(Base):
name: str = Field(index=True)
is_active: bool
groups: List["GroupDB"] = Relationship(back_populates="accessauths", link_model=AaGroupLink)
timetables: List["Timetable"] = Relationship(back_populates="accessauth")
class AccessAuthorizationDB(Base, table=True):
id: int | None = Field(default=None, primary_key=True)
class AccessAuthorizationCreate(AccessAuthorizationBase):
pass
class AccessAuthorizationResponse(AccessAuthorizationBase):
id: int
#### Card
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="groupdb.id")
group: GroupDB | 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="accessauthorizationdb.id")
accessauth: AccessAuthorizationDB | None = Relationship(back_populates="timetables")

View File

@@ -1,14 +0,0 @@
from pydantic import BaseModel
class UserBase(BaseModel):
name: str
email: str | None = None
is_admin: bool = False
class UserCreate(UserBase):
password: str
class User(UserBase):
id: int
class Config:
from_attributes = True