Update stratplay.py

Add page_num param to play queries
This commit is contained in:
Cal Corum 2023-11-29 09:57:23 -06:00
parent 85b855492f
commit 342eb50362

View File

@ -265,7 +265,8 @@ async def get_batting_totals(
group_by: Literal['team', 'player', 'playerteam', 'playergame', 'teamgame', 'league'] = 'player',
min_pa: Optional[int] = 1, team_id: list = Query(default=None), manager_id: list = Query(default=None),
obc: list = Query(default=None), risp: Optional[bool] = None, inning: list = Query(default=None),
sort: Optional[str] = None, limit: Optional[int] = None, short_output: Optional[bool] = False):
sort: Optional[str] = None, limit: Optional[int] = None, short_output: Optional[bool] = False,
page_num: Optional[int] = 1):
season_games = StratGame.select()
if season is not None:
season_games = season_games.where(StratGame.season << season)
@ -415,6 +416,10 @@ async def get_batting_totals(
limit = 1
bat_plays = bat_plays.limit(limit)
if limit < 1:
limit = 1
bat_plays = bat_plays.paginate(page_num, limit)
logging.info(f'bat_plays query: {bat_plays}')
logging.info(f'run_plays query: {run_plays}')
@ -510,7 +515,7 @@ async def get_pitching_totals(
min_pa: Optional[int] = 1, team_id: list = Query(default=None), manager_id: list = Query(default=None),
obc: list = Query(default=None), risp: Optional[bool] = None, inning: list = Query(default=None),
sort: Optional[str] = None, limit: Optional[int] = None, short_output: Optional[bool] = False,
csv: Optional[bool] = False):
csv: Optional[bool] = False, page_num: Optional[int] = 1):
season_games = StratGame.select()
if season is not None:
season_games = season_games.where(StratGame.season << season)
@ -603,30 +608,46 @@ async def get_pitching_totals(
pit_plays = pit_plays.join(StratGame)
pit_plays = pit_plays.group_by(StratPlay.game.season)
if sort is not None:
if sort == 'player':
if sort.lower() == 'player':
pit_plays = pit_plays.order_by(StratPlay.pitcher)
elif sort == 'team':
elif sort.lower() == 'team':
pit_plays = pit_plays.order_by(StratPlay.pitcher_team)
elif sort == 'wpa-desc':
elif sort.lower() == 'wpa-desc':
pit_plays = pit_plays.order_by(SQL('sum_wpa').asc()) # functions seem reversed since pitcher plays negative
elif sort == 'wpa-asc':
elif sort.lower() == 'wpa-asc':
pit_plays = pit_plays.order_by(SQL('sum_wpa').desc())
elif sort == 'ip-desc':
elif sort.lower() == 'ip-desc':
pit_plays = pit_plays.order_by(SQL('sum_outs').desc())
elif sort == 'ip-asc':
elif sort.lower() == 'ip-asc':
pit_plays = pit_plays.order_by(SQL('sum_outs').asc())
elif sort == 'game-desc':
elif sort.lower() == 'game-desc':
pit_plays = pit_plays.order_by(SQL('sum_game').desc())
elif sort == 'game-asc':
elif sort.lower() == 'game-asc':
pit_plays = pit_plays.order_by(SQL('sum_game').asc())
elif sort == 'newest':
elif sort.lower() == 'newest':
pit_plays = pit_plays.order_by(StratPlay.game_id.desc(), StratPlay.play_num.desc())
elif sort == 'oldest':
elif sort.lower() == 'oldest':
pit_plays = pit_plays.order_by(StratPlay.game_id, StratPlay.play_num)
if limit is not None:
elif sort.lower() == 'run-desc':
pit_plays = pit_plays.order_by(SQL('sum_run').desc())
elif sort.lower() == 'run-asc':
pit_plays = pit_plays.order_by(SQL('sum_run').asc())
elif sort.lower() == 'hit-desc':
pit_plays = pit_plays.order_by(SQL('sum_hit').desc())
elif sort.lower() == 'hit-asc':
pit_plays = pit_plays.order_by(SQL('sum_hit').asc())
elif sort.lower() == 'bb-desc':
pit_plays = pit_plays.order_by(SQL('sum_bb').desc())
elif sort.lower() == 'bb-asc':
pit_plays = pit_plays.order_by(SQL('sum_bb').asc())
elif sort.lower() == 'so-desc':
pit_plays = pit_plays.order_by(SQL('sum_so').desc())
elif sort.lower() == 'so-asc':
pit_plays = pit_plays.order_by(SQL('sum_so').asc())
if limit < 1:
limit = 1
pit_plays = pit_plays.limit(limit)
pit_plays = pit_plays.paginate(page_num, limit)
return_stats = {
'count': pit_plays.count(),
@ -718,7 +739,8 @@ async def get_fielding_totals(
group_by: Literal['team', 'player', 'playerteam', 'playerposition', 'teamposition', 'playerpositiongame',
'playergame'] = 'player',
min_ch: Optional[int] = 1, team_id: list = Query(default=None), manager_id: list = Query(default=None),
sort: Optional[str] = None, limit: Optional[int] = None, short_output: Optional[bool] = False):
sort: Optional[str] = None, limit: Optional[int] = None, short_output: Optional[bool] = False,
page_num: Optional[int] = 1):
season_games = StratGame.select()
if season is not None:
season_games = season_games.where(StratGame.season << season)
@ -803,10 +825,12 @@ async def get_fielding_totals(
def_plays = def_plays.order_by(StratPlay.game_id.desc(), StratPlay.play_num.desc())
elif sort == 'oldest':
def_plays = def_plays.order_by(StratPlay.game_id, StratPlay.play_num)
if limit is not None:
if limit < 1:
limit = 1
def_plays = def_plays.limit(limit)
elif limit > 500:
limit = 500
def_plays = def_plays.paginate(page_num, limit)
logging.info(f'def_plays query: {def_plays}')