From 33c505fee4b9e392278d13aed6c62b5ca265e6c2 Mon Sep 17 00:00:00 2001 From: julius Date: Mon, 10 Mar 2025 11:23:19 +0100 Subject: [PATCH] feat: change DB, represent players by id --- db.py | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/db.py b/db.py index e070cda..49a04af 100644 --- a/db.py +++ b/db.py @@ -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)