diff --git a/app/db_engine.py b/app/db_engine.py index e2ade17..44bbfcd 100644 --- a/app/db_engine.py +++ b/app/db_engine.py @@ -1918,6 +1918,7 @@ class StratGame(BaseModel): home_score = IntegerField(null=True) away_manager = ForeignKeyField(Manager, null=True) home_manager = ForeignKeyField(Manager, null=True) + scorecard_url = CharField(null=True) def update_standings(self): away_stan = Standings.get_season(self.away_team) @@ -2173,6 +2174,12 @@ class StratPlay(BaseModel): is_tied = BooleanField(default=False) is_new_inning = BooleanField(default=False) + # Season 9 addons + hand_batting = CharField(null=True) + hand_pitching = CharField(null=True) + re24_primary = FloatField(null=True) + re24_running = FloatField(null=True) + class Decision(BaseModel): game = ForeignKeyField(StratGame) @@ -2180,6 +2187,7 @@ class Decision(BaseModel): week = IntegerField() game_num = IntegerField() pitcher = ForeignKeyField(Player) + team = ForeignKeyField(Team) win = IntegerField() loss = IntegerField() hold = IntegerField() diff --git a/app/routers_v3/decisions.py b/app/routers_v3/decisions.py index 3f4f7d4..c6fd865 100644 --- a/app/routers_v3/decisions.py +++ b/app/routers_v3/decisions.py @@ -25,6 +25,7 @@ class DecisionModel(pydantic.BaseModel): week: int game_num: int pitcher_id: int + team_id: int win: int = 0 loss: int = 0 hold: int = 0 @@ -68,9 +69,12 @@ async def get_decisions( # all_games = StratGame.select().where( # (StratGame.away_team << all_teams) | (StratGame.home_team << all_teams)) # all_dec = all_dec.where(Decision.game << all_games) + # if team_id is not None: + # all_players = Player.select().where(Player.team_id << team_id) + # all_dec = all_dec.where(Decision.pitcher << all_players) if team_id is not None: - all_players = Player.select().where(Player.team_id << team_id) - all_dec = all_dec.where(Decision.pitcher << all_players) + all_teams = Team.select().where(Team.id << team_id) + all_dec = all_dec.where(Decision.team << all_teams) if s_type is not None: all_games = StratGame.select().where(StratGame.season_type == s_type) all_dec = all_dec.where(Decision.game << all_games) diff --git a/app/routers_v3/stratgame.py b/app/routers_v3/stratgame.py index 2c725a7..a2bfa6d 100644 --- a/app/routers_v3/stratgame.py +++ b/app/routers_v3/stratgame.py @@ -30,6 +30,7 @@ class GameModel(pydantic.BaseModel): home_score: Optional[int] = None away_manager_id: Optional[int] = None home_manager_id: Optional[int] = None + scorecard_url: Optional[str] = None class GameList(pydantic.BaseModel): @@ -122,7 +123,7 @@ async def get_one_game(game_id: int): async def patch_game( game_id: int, game_num: Optional[int] = None, away_score: Optional[int] = None, home_score: Optional[int] = None, away_manager_id: Optional[int] = None, home_manager_id: Optional[int] = None, - token: str = Depends(oauth2_scheme)): + token: str = Depends(oauth2_scheme), scorecard_url: Optional[str] = None): if not valid_token(token): logging.warning(f'patch_game - Bad Token: {token}') raise HTTPException(status_code=401, detail='Unauthorized') @@ -142,6 +143,8 @@ async def patch_game( this_game.away_manager_id = away_manager_id if home_manager_id is not None: this_game.home_manager_id = home_manager_id + if scorecard_url is not None: + this_game.scorecard_url = scorecard_url if this_game.save() == 1: g_result = model_to_dict(this_game) diff --git a/app/routers_v3/stratplay.py b/app/routers_v3/stratplay.py index e718c53..a929a05 100644 --- a/app/routers_v3/stratplay.py +++ b/app/routers_v3/stratplay.py @@ -86,6 +86,11 @@ class PlayModel(BaseModel): is_tied: bool = False is_new_inning: bool = False + hand_batting: str = None + hand_pitching: str = None + re24_primary: float = None + re24_running: float = None + @validator('on_first_final') def no_final_if_no_runner_one(cls, v, values): if values['on_first_id'] is None: @@ -611,9 +616,11 @@ async def get_pitching_totals( if player_id is not None: all_players = Player.select().where(Player.id << player_id) pit_plays = pit_plays.where(StratPlay.pitcher << all_players) + all_dec = all_dec.where(Decision.pitcher << all_players) if team_id is not None: all_teams = Team.select().where(Team.id << team_id) pit_plays = pit_plays.where(StratPlay.pitcher_team << all_teams) + all_dec = all_dec.where(Decision.team << all_teams) if obc is not None: pit_plays = pit_plays.where(StratPlay.on_base_code << obc) diff --git a/migrations.py b/migrations.py index ff1abbb..7942b22 100644 --- a/migrations.py +++ b/migrations.py @@ -11,7 +11,10 @@ migrator = SqliteMigrator(db_engine.db) # pitcher_injury = IntegerField(null=True) # pos_1 = CharField(default='None') # pos_2 = CharField(null=True) -# last_game = CharField(null=True) +# hand_batting = CharField(null=True) +# hand_pitching = CharField(null=True) +# re24_primary = FloatField(null=True) +# re24_running = FloatField(null=True) # last_game2 = CharField(null=True) # division = ForeignKeyField(db_engine.Division, field=db_engine.Division.id, null=True) # for division migration # manager = ForeignKeyField(db_engine.Manager, field=db_engine.Manager.id, null=True) # for manager table @@ -20,6 +23,7 @@ migrator = SqliteMigrator(db_engine.db) # f_career = ForeignKeyField(db_engine.FieldingCareer, field=db_engine.FieldingCareer.id, null=True) # for careers away_manager = ForeignKeyField(db_engine.Manager, field=db_engine.Manager.id, null=True) # to add Manager to games home_manager = ForeignKeyField(db_engine.Manager, field=db_engine.Manager.id, null=True) # to add Manager to games +team = ForeignKeyField(db_engine.Team, field=db_engine.Team.id, null=True) # to add Team to decisions migrate( # migrator.add_column('team', 'division_id', division), # for division migration @@ -38,6 +42,9 @@ migrate( # migrator.rename_table('story', 'stories_tbl'), # migrator.drop_index('team', 'team_abbrev'), # migrator.drop_index('player', 'player_name') - # migrator.add_column('stratgame', 'away_manager_id', away_manager), - migrator.add_column('stratgame', 'home_manager_id', home_manager) + migrator.add_column('decision', 'team', team), + # migrator.add_column('stratplay', 'hand_batting', hand_batting), + # migrator.add_column('stratplay', 'hand_pitching', hand_pitching), + # migrator.add_column('stratplay', 're24_primary', re24_primary), + # migrator.add_column('stratplay', 're24_running', re24_running) ) \ No newline at end of file