feat: add MongoDB functional for select, like, dislike cards
This commit is contained in:
+52
-3
@@ -3,6 +3,7 @@ import os
|
|||||||
import pymongo
|
import pymongo
|
||||||
|
|
||||||
from schemas.base_schemas import *
|
from schemas.base_schemas import *
|
||||||
|
from schemas.api_schemas import *
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@@ -18,9 +19,10 @@ class MongoWorker:
|
|||||||
password = os.getenv('MONGO_PASS'),
|
password = os.getenv('MONGO_PASS'),
|
||||||
uuidRepresentation="standard")
|
uuidRepresentation="standard")
|
||||||
self.db = self.client["data"]
|
self.db = self.client["data"]
|
||||||
self.users_data = self.db["users_data"]
|
self.users_data = self.db["users"]
|
||||||
|
self.visited_data = self.db["visited"]
|
||||||
self.counters = self.db["counters"]
|
self.counters = self.db["counters"]
|
||||||
self.game_data = self.db["game_data"]
|
self.game_data = self.db["cards"]
|
||||||
|
|
||||||
|
|
||||||
def check_user(self, user_id: int) -> bool:
|
def check_user(self, user_id: int) -> bool:
|
||||||
@@ -86,11 +88,58 @@ class MongoWorker:
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def select_choice(self, card_id: int, choice: str) -> BaseResponse:
|
||||||
|
if choice == "A":
|
||||||
|
count_choice = "count_choice_A"
|
||||||
|
elif choice == "B":
|
||||||
|
count_choice = "count_choice_B"
|
||||||
|
else:
|
||||||
|
return BaseResponse(result="Wrong choice", error=True)
|
||||||
|
|
||||||
|
result = self.game_data.find_one_and_update({"card_id": card_id},
|
||||||
|
{"$inc": {"count_total": 1, count_choice: 1}})
|
||||||
|
|
||||||
|
if not result:
|
||||||
|
return BaseResponse(result="Card doesn't exist", error=True)
|
||||||
|
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)
|
||||||
|
else:
|
||||||
|
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)
|
||||||
|
|
||||||
|
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:
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
mongo = MongoWorker()
|
mongo = MongoWorker()
|
||||||
#print(mongo.check_user(123))
|
#print(mongo.check_user(123))
|
||||||
#print(mongo.add_user(123, "VolochayIgor", "Igor", "Volochay", "photo_0.jpg"))
|
print(mongo.add_user(123, "VolochayIgor", "Igor", "Volochay", "photo_0.jpg"))
|
||||||
#print(mongo.get_user(123))
|
#print(mongo.get_user(123))
|
||||||
print(mongo.add_card("A", "B", 123))
|
print(mongo.add_card("A", "B", 123))
|
||||||
#print(mongo.get_random_cards(10, active_status=False))
|
#print(mongo.get_random_cards(10, active_status=False))
|
||||||
#print(mongo.update_counter("cards_counter"))
|
#print(mongo.update_counter("cards_counter"))
|
||||||
|
print(mongo.select_choice(1, "A"))
|
||||||
|
print(mongo.like_card(1, 455412573))
|
||||||
|
print(mongo.dislike_card(1, 455412573))
|
||||||
|
|||||||
Reference in New Issue
Block a user