add wpa sort to plays

This commit is contained in:
Cal Corum 2023-07-31 00:29:17 -05:00
parent cc3ff1d071
commit 147b77b851

View File

@ -123,8 +123,8 @@ async def get_plays(
defender_id: list = Query(default=None), runner_id: list = Query(default=None),
offense_team_id: list = Query(default=None), defense_team_id: list = Query(default=None),
double: Optional[int] = None, triple: Optional[int] = None, homerun: Optional[int] = None,
sb: Optional[int] = None, cs: Optional[int] = None,
short_output: Optional[bool] = False, limit: Optional[int] = 200):
sb: Optional[int] = None, cs: Optional[int] = None, manager_id: list = Query(default=None),
short_output: Optional[bool] = False, sort: Optional[str] = None, limit: Optional[int] = 200):
all_plays = StratPlay.select()
if game_id is not None:
@ -170,12 +170,22 @@ async def get_plays(
all_plays = all_plays.where(StratPlay.sb == sb)
if cs is not None:
all_plays = all_plays.where(StratPlay.cs == cs)
if manager_id is not None:
all_games = StratGame.select().where(
(StratGame.away_manager_id << manager_id) | (StratGame.home_manager_id << manager_id)
)
all_plays = all_plays.where(StratPlay.game << all_games)
if limit > 5000:
limit = 5000
elif limit < 1:
limit = 1
if sort == 'wpa-desc':
all_plays = all_plays.order_by(-fn.ABS(StratPlay.wpa))
if sort == 'wpa-asc':
all_plays = all_plays.order_by(fn.ABS(StratPlay.wpa))
all_plays = all_plays.limit(limit)
return_plays = {
@ -186,6 +196,16 @@ async def get_plays(
return return_plays
@router.get('/{play_id}')
async def get_one_play(play_id: int):
if StratPlay.get_or_none(StratPlay.id == play_id) is None:
db.close()
raise HTTPException(status_code=404, detail=f'Play ID {play_id} not found')
r_play = model_to_dict(StratPlay.get_by_id(play_id))
db.close()
return r_play
@router.patch('/{play_id}')
async def patch_play(play_id: int, new_play: PlayModel, token: str = Depends(oauth2_scheme)):
if not valid_token(token):