Bet matching work done.

This commit is contained in:
2026-01-04 17:13:32 -06:00
parent 93fb46f19b
commit 2e9b2c83de
60 changed files with 7183 additions and 1 deletions

View File

@ -0,0 +1,59 @@
from pydantic import BaseModel
from datetime import datetime
from typing import Optional, Dict, Any
from app.models.sport_event import SportType, EventStatus
class SportEventCreate(BaseModel):
sport: SportType
home_team: str
away_team: str
official_spread: float
game_time: datetime
venue: Optional[str] = None
league: Optional[str] = None
min_spread: float = -10.0
max_spread: float = 10.0
min_bet_amount: float = 10.0
max_bet_amount: float = 1000.0
class SportEventUpdate(BaseModel):
sport: Optional[SportType] = None
home_team: Optional[str] = None
away_team: Optional[str] = None
official_spread: Optional[float] = None
game_time: Optional[datetime] = None
venue: Optional[str] = None
league: Optional[str] = None
status: Optional[EventStatus] = None
final_score_home: Optional[int] = None
final_score_away: Optional[int] = None
class SportEvent(BaseModel):
id: int
sport: SportType
home_team: str
away_team: str
official_spread: float
game_time: datetime
venue: Optional[str] = None
league: Optional[str] = None
min_spread: float
max_spread: float
min_bet_amount: float
max_bet_amount: float
status: EventStatus
final_score_home: Optional[int] = None
final_score_away: Optional[int] = None
created_by: int
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class SportEventWithBets(SportEvent):
spread_grid: Dict[str, Any]

View File

@ -0,0 +1,45 @@
from pydantic import BaseModel
from datetime import datetime
from decimal import Decimal
from typing import Optional
from app.models.spread_bet import TeamSide, SpreadBetStatus
class SpreadBetCreate(BaseModel):
event_id: int
spread: float
team: TeamSide
stake_amount: Decimal
class SpreadBetTake(BaseModel):
pass
class SpreadBet(BaseModel):
id: int
event_id: int
spread: float
team: TeamSide
creator_id: int
taker_id: Optional[int] = None
stake_amount: Decimal
house_commission_percent: Decimal
status: SpreadBetStatus
payout_amount: Optional[Decimal] = None
winner_id: Optional[int] = None
created_at: datetime
matched_at: Optional[datetime] = None
completed_at: Optional[datetime] = None
class Config:
from_attributes = True
class SpreadBetDetail(SpreadBet):
creator_username: str
taker_username: Optional[str] = None
event_home_team: str
event_away_team: str
event_official_spread: float
event_game_time: datetime