bgg_api/src/classes/play_classes.py

60 lines
1.7 KiB
Python
Raw Normal View History

from sqlmodel import Field, SQLModel, Relationship
from typing import Union
2024-08-02 11:43:30 +02:00
from datetime import date
class PlayPlayerBase(SQLModel):
name: str
2024-08-02 11:43:30 +02:00
username: str
score: Union[float, None]
2024-08-02 11:51:25 +02:00
first_play : bool
has_won : bool
2024-08-21 21:03:49 +02:00
#play_id : int = Field(default=None, foreign_key="play.id")
class PlayPlayer(PlayPlayerBase, table=True):
id: int | None = Field(default=None, primary_key=True)
2024-08-21 21:03:49 +02:00
#play: "Play" = Relationship(back_populates="players")
class PlayPlayerPublic(PlayPlayerBase):
id: int
class PlayPlayerPublicWithPlay(PlayPlayerPublic):
play: "PlayPublic"
class PlayBase(SQLModel):
2024-08-21 21:03:49 +02:00
#boardgame_id: int | None = Field(default=None, foreign_key="boardgame.id")
#expansion_id: int | None = Field(default=None, foreign_key="boardgameexpansion.id")
play_date: date
2024-08-02 11:43:30 +02:00
duration: int #In minutes
ignore_for_stats : bool
location: str
class Play(PlayBase, table=True):
id: int | None = Field(default=None, primary_key=True)
2024-08-21 21:03:49 +02:00
#players: list[PlayPlayer] = Relationship(back_populates="play")
#boardgame: Union["BoardGame", None] = Relationship(back_populates="plays")
#boardgameexpansion: Union["BoardGameExpansion", None] = Relationship(back_populates="plays")
2024-08-11 21:45:27 +02:00
model_config = {
2024-08-11 21:45:27 +02:00
'validate_assignment':True
}
class PlayPublic(PlayBase):
id: int
2024-08-21 21:03:49 +02:00
# class PlayPublicWithPlayers(PlayPublic):
# players: list[PlayPlayerPublic] = []
# boardgame: Union["BoardGameNoPlays", None]
# boardgameexpansion: Union["BoardGameExpansionNoPlays", None]
2024-08-21 21:03:49 +02:00
from src.classes.boardgame_classes import BoardGame#, BoardGameExpansion, BoardGameNoPlays, BoardGameExpansionNoPlays
from src.classes.people_classes import Designer
Play.model_rebuild()
2024-08-21 21:03:49 +02:00
# PlayPublicWithPlayers.model_rebuild()