Merge branch 'main' into issue/147-feat-add-limit-pagination-to-events-endpoint
This commit is contained in:
commit
eebef62bc9
@ -145,6 +145,7 @@ async def get_card_ratings(
|
|||||||
vs_hand: Literal["R", "L", "vR", "vL"] = None,
|
vs_hand: Literal["R", "L", "vR", "vL"] = None,
|
||||||
short_output: bool = False,
|
short_output: bool = False,
|
||||||
csv: bool = False,
|
csv: bool = False,
|
||||||
|
limit: int = 100,
|
||||||
):
|
):
|
||||||
this_team = Team.get_or_none(Team.id == team_id)
|
this_team = Team.get_or_none(Team.id == team_id)
|
||||||
logging.debug(f"Team: {this_team} / has_guide: {this_team.has_guide}")
|
logging.debug(f"Team: {this_team} / has_guide: {this_team.has_guide}")
|
||||||
@ -178,6 +179,8 @@ async def get_card_ratings(
|
|||||||
)
|
)
|
||||||
all_ratings = all_ratings.where(BattingCardRatings.battingcard << set_cards)
|
all_ratings = all_ratings.where(BattingCardRatings.battingcard << set_cards)
|
||||||
|
|
||||||
|
all_ratings = all_ratings.limit(max(0, min(limit, 500)))
|
||||||
|
|
||||||
if csv:
|
if csv:
|
||||||
# return_val = query_to_csv(all_ratings)
|
# return_val = query_to_csv(all_ratings)
|
||||||
return_vals = [model_to_dict(x) for x in all_ratings]
|
return_vals = [model_to_dict(x) for x in all_ratings]
|
||||||
@ -281,7 +284,7 @@ def get_scouting_dfs(cardset_id: list = None):
|
|||||||
)
|
)
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
name=f"Arm OF",
|
name="Arm OF",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
series_list.append(
|
series_list.append(
|
||||||
@ -292,7 +295,7 @@ def get_scouting_dfs(cardset_id: list = None):
|
|||||||
for x in positions.where(CardPosition.position == "C")
|
for x in positions.where(CardPosition.position == "C")
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
name=f"Arm C",
|
name="Arm C",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
series_list.append(
|
series_list.append(
|
||||||
@ -303,7 +306,7 @@ def get_scouting_dfs(cardset_id: list = None):
|
|||||||
for x in positions.where(CardPosition.position == "C")
|
for x in positions.where(CardPosition.position == "C")
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
name=f"PB C",
|
name="PB C",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
series_list.append(
|
series_list.append(
|
||||||
@ -314,7 +317,7 @@ def get_scouting_dfs(cardset_id: list = None):
|
|||||||
for x in positions.where(CardPosition.position == "C")
|
for x in positions.where(CardPosition.position == "C")
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
name=f"Throw C",
|
name="Throw C",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
logging.debug(f"series_list: {series_list}")
|
logging.debug(f"series_list: {series_list}")
|
||||||
@ -334,9 +337,9 @@ async def get_card_scouting(team_id: int, ts: str):
|
|||||||
"https://ko-fi.com/manticorum/shop"
|
"https://ko-fi.com/manticorum/shop"
|
||||||
)
|
)
|
||||||
|
|
||||||
if os.path.isfile(f"storage/batting-ratings.csv"):
|
if os.path.isfile("storage/batting-ratings.csv"):
|
||||||
return FileResponse(
|
return FileResponse(
|
||||||
path=f"storage/batting-ratings.csv",
|
path="storage/batting-ratings.csv",
|
||||||
media_type="text/csv",
|
media_type="text/csv",
|
||||||
# headers=headers
|
# headers=headers
|
||||||
)
|
)
|
||||||
@ -354,7 +357,7 @@ async def post_calc_scouting(token: str = Depends(oauth2_scheme)):
|
|||||||
status_code=401, detail="You are not authorized to calculate card ratings."
|
status_code=401, detail="You are not authorized to calculate card ratings."
|
||||||
)
|
)
|
||||||
|
|
||||||
logging.warning(f"Re-calculating batting ratings\n\n")
|
logging.warning("Re-calculating batting ratings\n\n")
|
||||||
|
|
||||||
output = get_scouting_dfs()
|
output = get_scouting_dfs()
|
||||||
first = ["player_id", "player_name", "cardset_name", "rarity", "hand", "variant"]
|
first = ["player_id", "player_name", "cardset_name", "rarity", "hand", "variant"]
|
||||||
@ -370,9 +373,9 @@ async def post_calc_scouting(token: str = Depends(oauth2_scheme)):
|
|||||||
|
|
||||||
@router.get("/basic")
|
@router.get("/basic")
|
||||||
async def get_basic_scouting(cardset_id: list = Query(default=None)):
|
async def get_basic_scouting(cardset_id: list = Query(default=None)):
|
||||||
if os.path.isfile(f"storage/batting-basic.csv"):
|
if os.path.isfile("storage/batting-basic.csv"):
|
||||||
return FileResponse(
|
return FileResponse(
|
||||||
path=f"storage/batting-basic.csv",
|
path="storage/batting-basic.csv",
|
||||||
media_type="text/csv",
|
media_type="text/csv",
|
||||||
# headers=headers
|
# headers=headers
|
||||||
)
|
)
|
||||||
@ -390,7 +393,7 @@ async def post_calc_basic(token: str = Depends(oauth2_scheme)):
|
|||||||
status_code=401, detail="You are not authorized to calculate basic ratings."
|
status_code=401, detail="You are not authorized to calculate basic ratings."
|
||||||
)
|
)
|
||||||
|
|
||||||
logging.warning(f"Re-calculating basic batting ratings\n\n")
|
logging.warning("Re-calculating basic batting ratings\n\n")
|
||||||
|
|
||||||
raw_data = get_scouting_dfs()
|
raw_data = get_scouting_dfs()
|
||||||
logging.debug(f"output: {raw_data}")
|
logging.debug(f"output: {raw_data}")
|
||||||
@ -667,9 +670,11 @@ async def get_player_ratings(
|
|||||||
if variant is not None:
|
if variant is not None:
|
||||||
all_cards = all_cards.where(BattingCard.variant << variant)
|
all_cards = all_cards.where(BattingCard.variant << variant)
|
||||||
|
|
||||||
all_ratings = BattingCardRatings.select().where(
|
all_ratings = (
|
||||||
BattingCardRatings.battingcard << all_cards
|
BattingCardRatings.select()
|
||||||
).order_by(BattingCardRatings.id)
|
.where(BattingCardRatings.battingcard << all_cards)
|
||||||
|
.order_by(BattingCardRatings.id)
|
||||||
|
)
|
||||||
|
|
||||||
return_val = {
|
return_val = {
|
||||||
"count": all_ratings.count(),
|
"count": all_ratings.count(),
|
||||||
|
|||||||
@ -8,10 +8,7 @@ from ..db_engine import GameRewards, model_to_dict, DoesNotExist
|
|||||||
from ..dependencies import oauth2_scheme, valid_token
|
from ..dependencies import oauth2_scheme, valid_token
|
||||||
|
|
||||||
|
|
||||||
router = APIRouter(
|
router = APIRouter(prefix="/api/v2/gamerewards", tags=["gamerewards"])
|
||||||
prefix='/api/v2/gamerewards',
|
|
||||||
tags=['gamerewards']
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class GameRewardModel(pydantic.BaseModel):
|
class GameRewardModel(pydantic.BaseModel):
|
||||||
@ -21,10 +18,15 @@ class GameRewardModel(pydantic.BaseModel):
|
|||||||
money: Optional[int] = None
|
money: Optional[int] = None
|
||||||
|
|
||||||
|
|
||||||
@router.get('')
|
@router.get("")
|
||||||
async def v1_gamerewards_get(
|
async def v1_gamerewards_get(
|
||||||
name: Optional[str] = None, pack_type_id: Optional[int] = None, player_id: Optional[int] = None,
|
name: Optional[str] = None,
|
||||||
money: Optional[int] = None, csv: Optional[bool] = None):
|
pack_type_id: Optional[int] = None,
|
||||||
|
player_id: Optional[int] = None,
|
||||||
|
money: Optional[int] = None,
|
||||||
|
csv: Optional[bool] = None,
|
||||||
|
limit: int = 100,
|
||||||
|
):
|
||||||
all_rewards = GameRewards.select().order_by(GameRewards.id)
|
all_rewards = GameRewards.select().order_by(GameRewards.id)
|
||||||
|
|
||||||
# if all_rewards.count() == 0:
|
# if all_rewards.count() == 0:
|
||||||
@ -40,61 +42,76 @@ async def v1_gamerewards_get(
|
|||||||
if money is not None:
|
if money is not None:
|
||||||
all_rewards = all_rewards.where(GameRewards.money == money)
|
all_rewards = all_rewards.where(GameRewards.money == money)
|
||||||
|
|
||||||
|
limit = max(0, min(limit, 500))
|
||||||
|
all_rewards = all_rewards.limit(limit)
|
||||||
|
|
||||||
if csv:
|
if csv:
|
||||||
data_list = [['id', 'pack_type_id', 'player_id', 'money']]
|
data_list = [["id", "pack_type_id", "player_id", "money"]]
|
||||||
for line in all_rewards:
|
for line in all_rewards:
|
||||||
data_list.append([
|
data_list.append(
|
||||||
line.id, line.pack_type_id if line.pack_type else None, line.player_id if line.player else None,
|
[
|
||||||
line.money
|
line.id,
|
||||||
])
|
line.pack_type_id if line.pack_type else None,
|
||||||
|
line.player_id if line.player else None,
|
||||||
|
line.money,
|
||||||
|
]
|
||||||
|
)
|
||||||
return_val = DataFrame(data_list).to_csv(header=False, index=False)
|
return_val = DataFrame(data_list).to_csv(header=False, index=False)
|
||||||
|
|
||||||
return Response(content=return_val, media_type='text/csv')
|
return Response(content=return_val, media_type="text/csv")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return_val = {'count': all_rewards.count(), 'gamerewards': []}
|
return_val = {"count": all_rewards.count(), "gamerewards": []}
|
||||||
for x in all_rewards:
|
for x in all_rewards:
|
||||||
return_val['gamerewards'].append(model_to_dict(x))
|
return_val["gamerewards"].append(model_to_dict(x))
|
||||||
|
|
||||||
return return_val
|
return return_val
|
||||||
|
|
||||||
|
|
||||||
@router.get('/{gameaward_id}')
|
@router.get("/{gameaward_id}")
|
||||||
async def v1_gamerewards_get_one(gamereward_id, csv: Optional[bool] = None):
|
async def v1_gamerewards_get_one(gamereward_id, csv: Optional[bool] = None):
|
||||||
try:
|
try:
|
||||||
this_game_reward = GameRewards.get_by_id(gamereward_id)
|
this_game_reward = GameRewards.get_by_id(gamereward_id)
|
||||||
except DoesNotExist:
|
except DoesNotExist:
|
||||||
raise HTTPException(status_code=404, detail=f'No game reward found with id {gamereward_id}')
|
raise HTTPException(
|
||||||
|
status_code=404, detail=f"No game reward found with id {gamereward_id}"
|
||||||
|
)
|
||||||
|
|
||||||
if csv:
|
if csv:
|
||||||
data_list = [
|
data_list = [
|
||||||
['id', 'pack_type_id', 'player_id', 'money'],
|
["id", "pack_type_id", "player_id", "money"],
|
||||||
[this_game_reward.id, this_game_reward.pack_type_id if this_game_reward.pack_type else None,
|
[
|
||||||
this_game_reward.player_id if this_game_reward.player else None, this_game_reward.money]
|
this_game_reward.id,
|
||||||
|
this_game_reward.pack_type_id if this_game_reward.pack_type else None,
|
||||||
|
this_game_reward.player_id if this_game_reward.player else None,
|
||||||
|
this_game_reward.money,
|
||||||
|
],
|
||||||
]
|
]
|
||||||
return_val = DataFrame(data_list).to_csv(header=False, index=False)
|
return_val = DataFrame(data_list).to_csv(header=False, index=False)
|
||||||
|
|
||||||
return Response(content=return_val, media_type='text/csv')
|
return Response(content=return_val, media_type="text/csv")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return_val = model_to_dict(this_game_reward)
|
return_val = model_to_dict(this_game_reward)
|
||||||
return return_val
|
return return_val
|
||||||
|
|
||||||
|
|
||||||
@router.post('')
|
@router.post("")
|
||||||
async def v1_gamerewards_post(game_reward: GameRewardModel, token: str = Depends(oauth2_scheme)):
|
async def v1_gamerewards_post(
|
||||||
|
game_reward: GameRewardModel, token: str = Depends(oauth2_scheme)
|
||||||
|
):
|
||||||
if not valid_token(token):
|
if not valid_token(token):
|
||||||
logging.warning('Bad Token: [REDACTED]')
|
logging.warning("Bad Token: [REDACTED]")
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=401,
|
status_code=401,
|
||||||
detail='You are not authorized to post game rewards. This event has been logged.'
|
detail="You are not authorized to post game rewards. This event has been logged.",
|
||||||
)
|
)
|
||||||
|
|
||||||
this_award = GameRewards(
|
this_award = GameRewards(
|
||||||
name=game_reward.name,
|
name=game_reward.name,
|
||||||
pack_type_id=game_reward.pack_type_id,
|
pack_type_id=game_reward.pack_type_id,
|
||||||
player_id=game_reward.player_id,
|
player_id=game_reward.player_id,
|
||||||
money=game_reward.money
|
money=game_reward.money,
|
||||||
)
|
)
|
||||||
|
|
||||||
saved = this_award.save()
|
saved = this_award.save()
|
||||||
@ -104,24 +121,31 @@ async def v1_gamerewards_post(game_reward: GameRewardModel, token: str = Depends
|
|||||||
else:
|
else:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=418,
|
status_code=418,
|
||||||
detail='Well slap my ass and call me a teapot; I could not save that roster'
|
detail="Well slap my ass and call me a teapot; I could not save that roster",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.patch('/{game_reward_id}')
|
@router.patch("/{game_reward_id}")
|
||||||
async def v1_gamerewards_patch(
|
async def v1_gamerewards_patch(
|
||||||
game_reward_id: int, name: Optional[str] = None, pack_type_id: Optional[int] = None,
|
game_reward_id: int,
|
||||||
player_id: Optional[int] = None, money: Optional[int] = None, token: str = Depends(oauth2_scheme)):
|
name: Optional[str] = None,
|
||||||
|
pack_type_id: Optional[int] = None,
|
||||||
|
player_id: Optional[int] = None,
|
||||||
|
money: Optional[int] = None,
|
||||||
|
token: str = Depends(oauth2_scheme),
|
||||||
|
):
|
||||||
if not valid_token(token):
|
if not valid_token(token):
|
||||||
logging.warning('Bad Token: [REDACTED]')
|
logging.warning("Bad Token: [REDACTED]")
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=401,
|
status_code=401,
|
||||||
detail='You are not authorized to patch gamerewards. This event has been logged.'
|
detail="You are not authorized to patch gamerewards. This event has been logged.",
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
this_game_reward = GameRewards.get_by_id(game_reward_id)
|
this_game_reward = GameRewards.get_by_id(game_reward_id)
|
||||||
except DoesNotExist:
|
except DoesNotExist:
|
||||||
raise HTTPException(status_code=404, detail=f'No game reward found with id {game_reward_id}')
|
raise HTTPException(
|
||||||
|
status_code=404, detail=f"No game reward found with id {game_reward_id}"
|
||||||
|
)
|
||||||
|
|
||||||
if name is not None:
|
if name is not None:
|
||||||
this_game_reward.name = name
|
this_game_reward.name = name
|
||||||
@ -147,27 +171,32 @@ async def v1_gamerewards_patch(
|
|||||||
else:
|
else:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=418,
|
status_code=418,
|
||||||
detail='Well slap my ass and call me a teapot; I could not save that rarity'
|
detail="Well slap my ass and call me a teapot; I could not save that rarity",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.delete('/{gamereward_id}')
|
@router.delete("/{gamereward_id}")
|
||||||
async def v1_gamerewards_delete(gamereward_id, token: str = Depends(oauth2_scheme)):
|
async def v1_gamerewards_delete(gamereward_id, token: str = Depends(oauth2_scheme)):
|
||||||
if not valid_token(token):
|
if not valid_token(token):
|
||||||
logging.warning('Bad Token: [REDACTED]')
|
logging.warning("Bad Token: [REDACTED]")
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=401,
|
status_code=401,
|
||||||
detail='You are not authorized to delete awards. This event has been logged.'
|
detail="You are not authorized to delete awards. This event has been logged.",
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
this_award = GameRewards.get_by_id(gamereward_id)
|
this_award = GameRewards.get_by_id(gamereward_id)
|
||||||
except DoesNotExist:
|
except DoesNotExist:
|
||||||
raise HTTPException(status_code=404, detail=f'No award found with id {gamereward_id}')
|
raise HTTPException(
|
||||||
|
status_code=404, detail=f"No award found with id {gamereward_id}"
|
||||||
|
)
|
||||||
|
|
||||||
count = this_award.delete_instance()
|
count = this_award.delete_instance()
|
||||||
|
|
||||||
if count == 1:
|
if count == 1:
|
||||||
raise HTTPException(status_code=200, detail=f'Game Reward {gamereward_id} has been deleted')
|
raise HTTPException(
|
||||||
|
status_code=200, detail=f"Game Reward {gamereward_id} has been deleted"
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
raise HTTPException(status_code=500, detail=f'Game Reward {gamereward_id} was not deleted')
|
raise HTTPException(
|
||||||
|
status_code=500, detail=f"Game Reward {gamereward_id} was not deleted"
|
||||||
|
)
|
||||||
|
|||||||
@ -73,6 +73,7 @@ async def get_players(
|
|||||||
key_mlbam: list = Query(default=None),
|
key_mlbam: list = Query(default=None),
|
||||||
offense_col: list = Query(default=None),
|
offense_col: list = Query(default=None),
|
||||||
csv: Optional[bool] = False,
|
csv: Optional[bool] = False,
|
||||||
|
limit: int = 100,
|
||||||
):
|
):
|
||||||
all_players = MlbPlayer.select().order_by(MlbPlayer.id)
|
all_players = MlbPlayer.select().order_by(MlbPlayer.id)
|
||||||
|
|
||||||
@ -101,6 +102,8 @@ async def get_players(
|
|||||||
if offense_col is not None:
|
if offense_col is not None:
|
||||||
all_players = all_players.where(MlbPlayer.offense_col << offense_col)
|
all_players = all_players.where(MlbPlayer.offense_col << offense_col)
|
||||||
|
|
||||||
|
all_players = all_players.limit(max(0, min(limit, 500)))
|
||||||
|
|
||||||
if csv:
|
if csv:
|
||||||
return_val = query_to_csv(all_players)
|
return_val = query_to_csv(all_players)
|
||||||
return Response(content=return_val, media_type="text/csv")
|
return Response(content=return_val, media_type="text/csv")
|
||||||
@ -222,7 +225,7 @@ async def post_one_player(player: PlayerModel, token: str = Depends(oauth2_schem
|
|||||||
| (MlbPlayer.key_bbref == player.key_bbref)
|
| (MlbPlayer.key_bbref == player.key_bbref)
|
||||||
)
|
)
|
||||||
if dupes.count() > 0:
|
if dupes.count() > 0:
|
||||||
logging.info(f"POST /mlbplayers/one - dupes found:")
|
logging.info("POST /mlbplayers/one - dupes found:")
|
||||||
for x in dupes:
|
for x in dupes:
|
||||||
logging.info(f"{x}")
|
logging.info(f"{x}")
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user