from sqlmodel import Field, SQLModel, Relationship from typing import Union from datetime import date class PlayerPlayLink(SQLModel, table=True): player_name: str | None = Field(default=None, foreign_key="playplayer.name", primary_key=True) play_id: int | None = Field(default=None, foreign_key="play.id", primary_key=True) class PlayPlayer(SQLModel, table=True): name: str | None = Field(default=None, primary_key=True) username: str score: Union[float, None] first_play : bool has_won : bool plays: list["Play"] = Relationship(back_populates="players", link_model=PlayerPlayLink) class Play(SQLModel, table=True): id: int| None = Field(default=None, primary_key=True) boardgame_id: int play_date: date duration: int #In minutes ignore_for_stats : bool location: str players: list[PlayPlayer] = Relationship(back_populates="plays", link_model=PlayerPlayLink)