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:
|
else:
|
||||||
update_visited_result = mongo.update_visited_cards(choice_data.user_id, choice_data.card_id)
|
update_visited_result = mongo.update_visited_cards(choice_data.user_id, choice_data.card_id)
|
||||||
return BaseResponse(result="Select choice complite!")
|
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():
|
async def main():
|
||||||
config = uvicorn.Config("main:app", port=5000, log_level="debug")
|
config = uvicorn.Config("main:app", port=5000, log_level="debug")
|
||||||
|
|||||||
+34
-10
@@ -140,31 +140,55 @@ class MongoWorker:
|
|||||||
else:
|
else:
|
||||||
return BaseResponse(result=result, error=False)
|
return BaseResponse(result=result, error=False)
|
||||||
|
|
||||||
def like_card(self, card_id: int, user_id: int) -> BaseResponse:
|
def check_user_reactions(self, user_id: int, card_id: int) -> BaseResponse:
|
||||||
update_card_info = self.game_data.find_one_and_update({"card_id": card_id},
|
user_info: User = self.get_user(user_id)
|
||||||
{"$inc": {"count_likes": 1}})
|
liked_card_ids: list = user_info.liked_card_ids
|
||||||
if not update_card_info:
|
disliked_card_ids: list = user_info.disliked_card_ids
|
||||||
return BaseResponse(result="Card doesn't exist", error=True)
|
|
||||||
|
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:
|
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},
|
add_card_to_user = self.users_data.update_one({'user_id': user_id},
|
||||||
{'$push': {'liked_card_ids': card_id}})
|
{'$push': {'liked_card_ids': card_id}})
|
||||||
if not add_card_to_user:
|
if not add_card_to_user:
|
||||||
return BaseResponse(result="User doesn't exist", error=True)
|
return BaseResponse(result="User doesn't exist", error=True)
|
||||||
else:
|
else:
|
||||||
return BaseResponse(result=True, error=False)
|
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:
|
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},
|
if self.check_user(user_id):
|
||||||
{"$inc": {"count_dislikes": 1}})
|
user_reaction = self.check_user_reactions(user_id, card_id)
|
||||||
if not update_card_info:
|
if user_reaction.error:
|
||||||
return BaseResponse(result="Card doesn't exist", error=True)
|
return user_reaction
|
||||||
else:
|
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},
|
add_card_to_user = self.users_data.update_one({'user_id': user_id},
|
||||||
{'$push': {'disliked_card_ids': card_id}})
|
{'$push': {'disliked_card_ids': card_id}})
|
||||||
if not add_card_to_user:
|
if not add_card_to_user:
|
||||||
return BaseResponse(result="User doesn't exist", error=True)
|
return BaseResponse(result="User doesn't exist", error=True)
|
||||||
else:
|
else:
|
||||||
return BaseResponse(result=True, error=False)
|
return BaseResponse(result=True, error=False)
|
||||||
|
else:
|
||||||
|
return BaseResponse(result="User doesn't exist", error=True)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user