feat: add /like_card and /dislike_card routs
This commit is contained in:
+22
@@ -125,7 +125,29 @@ async def select_choice(choice_data: SelectChoice,
|
||||
else:
|
||||
update_visited_result = mongo.update_visited_cards(choice_data.user_id, choice_data.card_id)
|
||||
return BaseResponse(result="Select choice complite!")
|
||||
|
||||
@app.patch("/like_card", status_code=200)
|
||||
async def like_card(like_data: ReactionCard,
|
||||
response: Response,
|
||||
mongo: MongoWorker = Depends(MongoWorker)) -> BaseResponse:
|
||||
result = mongo.like_card(like_data.card_id, like_data.user_id)
|
||||
if not result.error and result.result:
|
||||
return BaseResponse(result="Added like to card")
|
||||
else:
|
||||
response.status_code = status.HTTP_404_NOT_FOUND
|
||||
return result
|
||||
|
||||
@app.patch("/dislike_card", status_code=200)
|
||||
async def dislike_card(dislike_data: ReactionCard,
|
||||
response: Response,
|
||||
mongo: MongoWorker = Depends(MongoWorker)) -> BaseResponse:
|
||||
result = mongo.dislike_card(dislike_data.card_id, dislike_data.user_id)
|
||||
if not result.error and result.result:
|
||||
return BaseResponse(result="Added dislike to card")
|
||||
else:
|
||||
response.status_code = status.HTTP_404_NOT_FOUND
|
||||
return result
|
||||
|
||||
|
||||
async def main():
|
||||
config = uvicorn.Config("main:app", port=5000, log_level="debug")
|
||||
|
||||
+34
-10
@@ -140,31 +140,55 @@ class MongoWorker:
|
||||
else:
|
||||
return BaseResponse(result=result, error=False)
|
||||
|
||||
def like_card(self, card_id: int, user_id: int) -> BaseResponse:
|
||||
update_card_info = self.game_data.find_one_and_update({"card_id": card_id},
|
||||
{"$inc": {"count_likes": 1}})
|
||||
if not update_card_info:
|
||||
return BaseResponse(result="Card doesn't exist", error=True)
|
||||
def check_user_reactions(self, user_id: int, card_id: int) -> BaseResponse:
|
||||
user_info: User = self.get_user(user_id)
|
||||
liked_card_ids: list = user_info.liked_card_ids
|
||||
disliked_card_ids: list = user_info.disliked_card_ids
|
||||
|
||||
if card_id in liked_card_ids:
|
||||
return BaseResponse(result="Card already liked", error=True)
|
||||
elif card_id in disliked_card_ids:
|
||||
return BaseResponse(result="Card already disliked", error=True)
|
||||
else:
|
||||
return BaseResponse(result="No reactions", error=False)
|
||||
|
||||
def like_card(self, card_id: int, user_id: int) -> BaseResponse:
|
||||
if self.check_user(user_id):
|
||||
user_reaction = self.check_user_reactions(user_id, card_id)
|
||||
if user_reaction.error:
|
||||
return user_reaction
|
||||
update_card_info = self.game_data.find_one_and_update({"card_id": card_id},
|
||||
{"$inc": {"count_likes": 1}})
|
||||
if not update_card_info:
|
||||
return BaseResponse(result="Card doesn't exist", error=True)
|
||||
|
||||
add_card_to_user = self.users_data.update_one({'user_id': user_id},
|
||||
{'$push': {'liked_card_ids': card_id}})
|
||||
if not add_card_to_user:
|
||||
return BaseResponse(result="User doesn't exist", error=True)
|
||||
else:
|
||||
return BaseResponse(result=True, error=False)
|
||||
else:
|
||||
return BaseResponse(result="User doesn't exist", error=True)
|
||||
|
||||
def dislike_card(self, card_id: int, user_id: int) -> BaseResponse:
|
||||
update_card_info = self.game_data.find_one_and_update({"card_id": card_id},
|
||||
{"$inc": {"count_dislikes": 1}})
|
||||
if not update_card_info:
|
||||
return BaseResponse(result="Card doesn't exist", error=True)
|
||||
else:
|
||||
if self.check_user(user_id):
|
||||
user_reaction = self.check_user_reactions(user_id, card_id)
|
||||
if user_reaction.error:
|
||||
return user_reaction
|
||||
update_card_info = self.game_data.find_one_and_update({"card_id": card_id},
|
||||
{"$inc": {"count_dislikes": 1}})
|
||||
if not update_card_info:
|
||||
return BaseResponse(result="Card doesn't exist", error=True)
|
||||
|
||||
add_card_to_user = self.users_data.update_one({'user_id': user_id},
|
||||
{'$push': {'disliked_card_ids': card_id}})
|
||||
if not add_card_to_user:
|
||||
return BaseResponse(result="User doesn't exist", error=True)
|
||||
else:
|
||||
return BaseResponse(result=True, error=False)
|
||||
else:
|
||||
return BaseResponse(result="User doesn't exist", error=True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user