From 8d0b359e852e322f71159c35d3e2efe6c2ff7605 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Mon, 6 Mar 2023 13:29:19 -0600 Subject: [PATCH] Pack Type addition add pack_team and pack_cardset fields --- db_engine.py | 2 ++ main.py | 29 +++++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/db_engine.py b/db_engine.py index 7e5f1f7..2926def 100644 --- a/db_engine.py +++ b/db_engine.py @@ -248,6 +248,8 @@ db.create_tables([PackType]) class Pack(BaseModel): team = ForeignKeyField(Team) pack_type = ForeignKeyField(PackType) + pack_team = ForeignKeyField(Team, null=True) + pack_cardset = ForeignKeyField(Cardset, null=True) open_time = DateTimeField(null=True) diff --git a/main.py b/main.py index cefab02..077f0f2 100644 --- a/main.py +++ b/main.py @@ -1880,6 +1880,8 @@ PACK ENDPOINTS class PackPydantic(pydantic.BaseModel): team_id: int pack_type_id: int + pack_team_id: Optional[int] = None + pack_cardset_id: Optional[int] = None open_time: Optional[str] = None @@ -1890,7 +1892,8 @@ class PackModel(pydantic.BaseModel): @app.get('/api/v1/packs') async def v1_packs_get( team_id: Optional[int] = None, pack_type_id: Optional[int] = None, opened: Optional[bool] = None, - limit: Optional[int] = None, new_to_old: Optional[bool] = None, csv: Optional[bool] = None): + limit: Optional[int] = None, new_to_old: Optional[bool] = None, pack_team_id: Optional[int] = None, + pack_cardset_id: Optional[int] = None, csv: Optional[bool] = None): all_packs = Pack.select() if all_packs.count() == 0: @@ -1911,6 +1914,20 @@ async def v1_packs_get( db.close() raise HTTPException(status_code=404, detail=f'No pack type found with id {pack_type_id}') all_packs = all_packs.where(Pack.pack_type == this_pack_type) + if pack_team_id is not None: + try: + this_pack_team = Team.get_by_id(pack_type_id) + except Exception: + db.close() + raise HTTPException(status_code=404, detail=f'No team found with id {pack_team_id}') + all_packs = all_packs.where(Pack.pack_team == this_pack_team) + if pack_cardset_id is not None: + try: + this_pack_cardset = Cardset.get_by_id(pack_cardset_id) + except Exception: + db.close() + raise HTTPException(status_code=404, detail=f'No cardset found with id {pack_cardset_id}') + all_packs = all_packs.where(Pack.pack_cardset == this_pack_cardset) if opened is not None: all_packs = all_packs.where(Pack.open_time.is_null(not opened)) if limit is not None: @@ -1985,6 +2002,8 @@ async def v1_packs_post(packs: PackModel, token: str = Depends(oauth2_scheme)): this_player = Pack( team_id=x.team_id, pack_type_id=x.pack_type_id, + pack_team_id=x.pack_team_id, + pack_cardset_id=x.pack_cardset_id, open_time=x.open_time if x.open_time != "" else None ) new_packs.append(this_player) @@ -2009,6 +2028,8 @@ async def v1_packs_post_one(pack: PackPydantic, token: str = Depends(oauth2_sche this_pack = Pack( team_id=pack.team_id, pack_type_id=pack.pack_type_id, + pack_team_id=pack.pack_team_id, + pack_cardset_id=pack.pack_cardset_id, open_time=pack.open_time ) @@ -2027,7 +2048,7 @@ async def v1_packs_post_one(pack: PackPydantic, token: str = Depends(oauth2_sche @app.patch('/api/v1/packs/{pack_id}') async def v1_packs_patch( pack_id, team_id: Optional[int] = None, pack_type_id: Optional[int] = None, open_time: Optional[int] = None, - token: str = Depends(oauth2_scheme)): + pack_team_id: Optional[int] = None, pack_cardset_id: Optional[int] = None, token: str = Depends(oauth2_scheme)): if not valid_token(token): logging.warning(f'Bad Token: {token}') db.close() @@ -2045,6 +2066,10 @@ async def v1_packs_patch( this_pack.team_id = team_id if pack_type_id is not None: this_pack.pack_type_id = pack_type_id + if pack_team_id is not None: + this_pack.pack_team_id = pack_team_id + if pack_cardset_id is not None: + this_pack.pack_cardset_id = pack_cardset_id if open_time is not None: this_pack.open_time = open_time