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]