From 55b35a242ae3071096b300f3da82e6b79fbc7219 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Wed, 18 Dec 2024 09:58:59 -0600 Subject: [PATCH] Add gauntlet team support to get_team_or_none --- in_game/gameplay_queries.py | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/in_game/gameplay_queries.py b/in_game/gameplay_queries.py index 3717c90..091b3f7 100644 --- a/in_game/gameplay_queries.py +++ b/in_game/gameplay_queries.py @@ -60,22 +60,29 @@ def get_active_games_by_team(session: Session, team: Team) -> list[Game]: async def get_team_or_none( - session: Session, team_id: int | None = None, gm_id: int | None = None, team_abbrev: str | None = None, skip_cache: bool = False) -> Team | None: - logger.info(f'Getting team or none / team_id: {team_id} / gm_id: {gm_id} / team_abbrev: {team_abbrev} / skip_cache: {skip_cache}') + session: Session, team_id: int | None = None, gm_id: int | None = None, team_abbrev: str | None = None, skip_cache: bool = False, main_team: bool = None, gauntlet_team: bool = None) -> Team | None: + logger.info(f'Getting team or none / team_id: {team_id} / gm_id: {gm_id} / team_abbrev: {team_abbrev} / skip_cache: {skip_cache} / main_team: {main_team} / gauntlet_team: {gauntlet_team}') + if gm_id is not None: + if main_team is None and gauntlet_team is None: + main_team = True + gauntlet_team = False + elif main_team == gauntlet_team: + log_exception(KeyError, 'Must select either main_team or gauntlet_team') + if team_id is None and gm_id is None and team_abbrev is None: - err = 'One of "team_id", "gm_id", or "team_abbrev" must be included in search' - logger.error(f'gameplay_models - get_team - {err}') - raise TypeError(err) + log_exception(KeyError, 'One of "team_id", "gm_id", or "team_abbrev" must be included in search') if not skip_cache: if team_id is not None: this_team = session.get(Team, team_id) else: if gm_id is not None: - statement = select(Team).where(Team.gmid == gm_id) + for team in session.exec(select(Team).where(Team.gmid == gm_id)).all(): + if ('gauntlet' in team.abbrev.lower() and gauntlet_team) or ('gauntlet' not in team.abbrev.lower() and main_team): + this_team = team + break else: - statement = select(Team).where(func.lower(Team.abbrev) == team_abbrev.lower()) - this_team = session.exec(statement).one_or_none() + this_team = session.exec(select(Team).where(func.lower(Team.abbrev) == team_abbrev.lower())).one_or_none() if this_team is not None: logger.debug(f'we found a team: {this_team} / created: {this_team.created}') @@ -112,6 +119,9 @@ async def get_team_or_none( elif team_abbrev is not None: t_query = await db_get('teams', params=[('abbrev', team_abbrev)]) if t_query['count'] != 0: + if 'gauntlet' in team_abbrev.lower(): + return cache_team(t_query['teams'][0]) + for team in [x for x in t_query['teams'] if 'gauntlet' not in x['abbrev'].lower()]: return cache_team(team) @@ -906,3 +916,13 @@ def get_available_pitchers(session: Session, this_game: Game, this_team: Team, s pitchers.sort(key=sort_by_pow, reverse=True) return pitchers + + +def get_available_batters(session: Session, this_game: Game, this_team: Team) -> list[Card]: + logger.info(f'getting available batters for team {this_team.id} in game {this_game.id}') + all_subs = get_available_subs(session, this_game, this_team) + logger.info(f'all_subs: {all_subs}') + batters = [x for x in all_subs if x.batterscouting is not None] + logger.info(f'batters: {batters}') + + return batters