from datetime import datetime from typing import Optional, Union, List, Dict from pydantic import BaseModel, Field, Json class MysqlConfig(BaseModel): host: str port: int db_name: str user: str password: str class OddsJamOrder(BaseModel): id: str = Field(..., description="主键,自增ID") bet_id: Optional[str] = Field(None, description="投注ID") game_id: Optional[str] = Field(None, description="比赛ID") away_bet_name: Optional[str] = Field(None, description="客队投注名称") home_bet_name: Optional[str] = Field(None, description="主队投注名称") away_no_vig_price: Optional[float] = Field(None, description="客队无佣金价格") home_no_vig_price: Optional[float] = Field(None, description="主队无佣金价格") away_price: Optional[float] = Field(None, description="客队价格") home_price: Optional[float] = Field(None, description="主队价格") away_sportsbooks: Optional[Json[List[str]]] = Field( None, description="客队的体育书籍,JSON格式") home_sportsbooks: Optional[Json[List[str]]] = Field( None, description="主队的体育书籍,JSON格式") is_live: Optional[bool] = Field(None, description="是否为直播") in_game_status: Optional[str] = Field(None, description="比赛状态") period: Optional[str] = Field(None, description="比赛时段") clock: Optional[str] = Field(None, description="比赛时钟") last_play: Optional[str] = Field(None, description="最后一次比赛") home_score: Optional[int] = Field(None, description="主队得分") away_score: Optional[int] = Field(None, description="客队得分") sport: Optional[str] = Field(None, description="运动类型") league: Optional[str] = Field(None, description="联赛") market: Optional[str] = Field(None, description="市场") market_width: Optional[float] = Field(None, description="市场宽度") percentage: Optional[float] = Field(None, description="百分比") start_date: Optional[datetime] = Field(None, description="比赛开始日期时间") home_team: Optional[str] = Field(None, description="主队") away_team: Optional[str] = Field(None, description="客队") timestamp: Optional[float] = Field(None, description="时间戳") away_deep_link_map: Optional[str] = Field( None, description="客队深度链接映射,JSON格式") home_deep_link_map: Optional[str] = Field( None, description="主队深度链接映射,JSON格式") status: Optional[str] = Field(None, description="状态") away_edge_percent: Optional[float] = Field(None, description="客队边缘百分比") bet_placed: Optional[bool] = Field(None, description="是否下注") same_market_bet_placed: Optional[bool] = Field( None, description="是否在同一市场下注") same_game_bet_placed: Optional[bool] = Field(None, description="是否在同一比赛下注") away_rec_size: Optional[int] = Field(None, description="客队推荐大小") rec_size: Optional[int] = Field(None, description="推荐大小") home_edge_percent: Optional[float] = Field(None, description="主队边缘百分比") order_status: int = Field(0, description="订单状态") amount: Optional[int] = Field(None, description="下单金额,整数") create_time: Optional[str] = Field(None, description="创建时间") sportsbook_orderid: Optional[str] = Field(None, description="博彩公司订单ID") home_or_away: Optional[str] = Field(None, description="主队或客队") start_timestamp: Optional[int] = Field(None, description="开始时间戳") selected_sportsbook: Optional[str] = Field(None, description="选定的博彩公司") class OddjamsBet(BaseModel): Sportsbook: str BetName: str MarketName: str Odds: int Stake: int EventName: str Sport: str League: str GameID: str GameStartDate: str BetType: str Notes: str