feat: change DB, represent players by id

This commit is contained in:
julius 2025-03-10 11:23:19 +01:00
parent cfe2df01f7
commit 33c505fee4
Signed by: julius
GPG Key ID: C80A63E6A5FD7092

37
db.py
View File

@ -2,18 +2,21 @@ from datetime import datetime, timezone
from sqlmodel import (
ARRAY,
Column,
Integer,
Relationship,
SQLModel,
Field,
create_engine,
String,
)
with open("db.secrets", "r") as f:
db_secrets = f.readline().strip()
engine = create_engine(
db_secrets, pool_timeout=20, pool_size=2, connect_args={"connect_timeout": 8}
db_secrets,
pool_timeout=20,
pool_size=2,
connect_args={"connect_timeout": 8},
)
del db_secrets
@ -41,37 +44,33 @@ class Team(SQLModel, table=True):
class Player(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
name: str
username: str = Field(default=None, unique=True)
display_name: str
email: str | None = None
full_name: str | None = None
disabled: bool | None = None
hashed_password: str | None = None
number: str | None = None
teams: list[Team] | None = Relationship(
back_populates="players", link_model=PlayerTeamLink
)
scopes: str = ""
class Chemistry(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
time: datetime | None = Field(default_factory=utctime)
user: str
love: list[str] = Field(sa_column=Column(ARRAY(String)))
hate: list[str] = Field(sa_column=Column(ARRAY(String)))
undecided: list[str] = Field(sa_column=Column(ARRAY(String)))
user: int | None = Field(default=None, foreign_key="player.id")
hate: list[int] = Field(sa_column=Column(ARRAY(Integer)))
undecided: list[int] = Field(sa_column=Column(ARRAY(Integer)))
love: list[int] = Field(sa_column=Column(ARRAY(Integer)))
class MVPRanking(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
time: datetime | None = Field(default_factory=utctime)
user: str
mvps: list[str] = Field(sa_column=Column(ARRAY(String)))
class User(SQLModel, table=True):
username: str = Field(default=None, primary_key=True)
email: str | None = None
full_name: str | None = None
disabled: bool | None = None
hashed_password: str | None = None
player_id: int | None = Field(default=None, foreign_key="player.id")
scopes: str = ""
user: int | None = Field(default=None, foreign_key="player.id")
mvps: list[int] = Field(sa_column=Column(ARRAY(Integer)))
SQLModel.metadata.create_all(engine)