Spaces:
Running
Running
File size: 1,243 Bytes
1bb9c62 d25bf89 1bb9c62 d25bf89 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
from sqlalchemy import String, Float, ForeignKey, UniqueConstraint
from sqlalchemy.orm import relationship, mapped_column, Mapped
from typing import Optional
from pydantic import BaseModel
from . import Base
class Odds(Base):
"""
Odds table
"""
__tablename__ = "odds"
__table_args__ = (
UniqueConstraint('fk_match_id', 'bookmaker', name='uq_odds_match_bookmaker'),
{'schema': 'data', 'extend_existing': True}
)
# Odds table columns
id: Mapped[int] = mapped_column(primary_key=True)
bookmaker: Mapped[str] = mapped_column(String, nullable=True)
winner: Mapped[float] = mapped_column(Float, nullable=True)
loser: Mapped[float] = mapped_column(Float, nullable=True)
fk_match_id: Mapped[int] = mapped_column(ForeignKey("data.match.id", ondelete="CASCADE", name='odds_fk_match_id_fkey'), nullable=False)
match: Mapped["Match"] = relationship("Match", back_populates="odds") # type: ignore # noqa: F821
# -----------------------------------------------------------
# Pydantic Model for Odds
# -----------------------------------------------------------
class OddsApi(BaseModel):
id: int
bookmaker: Optional[str]
winner: Optional[float]
loser: Optional[float]
|