Split frontend model from backend model
All checks were successful
Build Formula10 Docker Image / build-docker (push) Successful in 26s
All checks were successful
Build Formula10 Docker Image / build-docker (push) Successful in 26s
This commit is contained in:
67
formula10/database/model/db_season_guess.py
Normal file
67
formula10/database/model/db_season_guess.py
Normal file
@ -0,0 +1,67 @@
|
||||
from typing import Any, List
|
||||
from sqlalchemy import ForeignKey, String
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from formula10.database.model.db_driver import DbDriver
|
||||
from formula10.database.model.db_team import DbTeam
|
||||
from formula10.database.model.db_user import DbUser
|
||||
from formula10 import db
|
||||
|
||||
class DbSeasonGuess(db.Model):
|
||||
"""
|
||||
A collection of bonus guesses for the entire season.
|
||||
"""
|
||||
__tablename__ = "seasonguess"
|
||||
__csv_header__ = ["user_name", "hot_take", "p2_team_name",
|
||||
"overtake_driver_name", "dnf_driver_name", "gained_driver_name", "lost_driver_name",
|
||||
"team_winners_driver_names_json", "podium_drivers_driver_names_json"]
|
||||
|
||||
def __init__(self, *, user_name: str, team_winners_driver_names_json: str, podium_drivers_driver_names_json: str):
|
||||
self.user_name = user_name # Primary key
|
||||
|
||||
self.team_winners_driver_names_json = team_winners_driver_names_json
|
||||
self.podium_drivers_driver_names_json = podium_drivers_driver_names_json
|
||||
|
||||
@classmethod
|
||||
def from_csv(cls, row: List[str]):
|
||||
db_season_guess: DbSeasonGuess = cls(user_name=str(row[0]),
|
||||
team_winners_driver_names_json=str(row[7]),
|
||||
podium_drivers_driver_names_json=str(row[8]))
|
||||
db_season_guess.hot_take = str(row[1])
|
||||
db_season_guess.p2_team_name = str(row[2])
|
||||
db_season_guess.overtake_driver_name = str(row[3])
|
||||
db_season_guess.dnf_driver_name = str(row[4])
|
||||
db_season_guess.gained_driver_name = str(row[5])
|
||||
db_season_guess.lost_driver_name = str(row[6])
|
||||
return db_season_guess
|
||||
|
||||
def to_csv(self) -> List[Any]:
|
||||
return [
|
||||
self.user_name,
|
||||
self.hot_take,
|
||||
self.p2_team_name,
|
||||
self.overtake_driver_name,
|
||||
self.dnf_driver_name,
|
||||
self.gained_driver_name,
|
||||
self.lost_driver_name,
|
||||
self.team_winners_driver_names_json,
|
||||
self.podium_drivers_driver_names_json
|
||||
]
|
||||
|
||||
user_name: Mapped[str] = mapped_column(ForeignKey("user.name"), primary_key=True)
|
||||
hot_take: Mapped[str | None] = mapped_column(String(512), nullable=True)
|
||||
p2_team_name: Mapped[str | None] = mapped_column(ForeignKey("team.name"), nullable=True)
|
||||
overtake_driver_name: Mapped[str | None] = mapped_column(ForeignKey("driver.name"), nullable=True)
|
||||
dnf_driver_name: Mapped[str | None] = mapped_column(ForeignKey("driver.name"), nullable=True)
|
||||
gained_driver_name: Mapped[str | None] = mapped_column(ForeignKey("driver.name"), nullable=True)
|
||||
lost_driver_name: Mapped[str | None] = mapped_column(ForeignKey("driver.name"), nullable=True)
|
||||
team_winners_driver_names_json: Mapped[str] = mapped_column(String(1024))
|
||||
podium_drivers_driver_names_json: Mapped[str] = mapped_column(String(1024))
|
||||
|
||||
# Relationships
|
||||
user: Mapped[DbUser] = relationship("DbUser", foreign_keys=[user_name])
|
||||
p2_team: Mapped[DbTeam | None] = relationship("DbTeam", foreign_keys=[p2_team_name])
|
||||
overtake_driver: Mapped[DbDriver | None] = relationship("DbDriver", foreign_keys=[overtake_driver_name])
|
||||
dnf_driver: Mapped[DbDriver | None] = relationship("DbDriver", foreign_keys=[dnf_driver_name])
|
||||
gained_driver: Mapped[DbDriver | None] = relationship("DbDriver", foreign_keys=[gained_driver_name])
|
||||
lost_driver: Mapped[DbDriver | None] = relationship("DbDriver", foreign_keys=[lost_driver_name])
|
Reference in New Issue
Block a user