From d26136b1526a5548d8e5a4b815b5c50b9aa25b68 Mon Sep 17 00:00:00 2001 From: IgorVolochay Date: Tue, 25 Feb 2025 14:47:20 +0300 Subject: [PATCH] feat: add cards functionals in MongoWorker --- app/mongo_worker.py | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/app/mongo_worker.py b/app/mongo_worker.py index 5ad56db..09a7ef4 100644 --- a/app/mongo_worker.py +++ b/app/mongo_worker.py @@ -3,6 +3,7 @@ import os import pymongo from schemas.base_schemas import * +from typing import Optional from datetime import datetime from dotenv import load_dotenv @@ -19,6 +20,7 @@ class MongoWorker: self.users_data = self.db["users_data"] self.game_data = self.db["game_data"] + def check_user(self, user_id: int) -> bool: if self.users_data.find_one({"user_id": user_id}): return True @@ -40,10 +42,41 @@ class MongoWorker: def get_user(self, user_id: int) -> User: return User.model_validate(self.users_data.find_one({"user_id": user_id})) + + def add_card(self, choice_A: str, choice_B: str, author_id: int) -> Card: + new_card = Card(choice_A=choice_A, + choice_B=choice_B, + author_id=author_id, + creation_date=datetime.now().isoformat()) + try: + self.game_data.insert_one(new_card.model_dump(by_alias=True)) + return new_card + except Exception as exception: + return new_card + + def get_card(self, card_id: ObjectId) -> Optional[Card]: + document = self.game_data.find_one({"_id": card_id}) + if document: + return Card.model_validate(document) + else: + return None + + def get_random_cards(self, amount: int, active_status: bool) -> Optional[list[Card]]: + pipeline = [{"$match": {"active_status": active_status}}, + {"$sample": {"size": amount}}] + raw_items = list(self.game_data.aggregate(pipeline)) + + if raw_items: + validated_items = [Card.model_validate(item) for item in raw_items] + return validated_items + else: + return None if __name__ == "__main__": mongo = MongoWorker() - print(mongo.check_user(123)) - # print(mongo.add_user(123, "VolochayIgor", "Igor", "Volochay", "photo_0.jpg")) - print(mongo.get_user(123)) + #print(mongo.check_user(123)) + #print(mongo.add_user(123, "VolochayIgor", "Igor", "Volochay", "photo_0.jpg")) + #print(mongo.get_user(123)) + print(mongo.add_card("A", "B", 123)) + print(mongo.get_random_cards(10, active_status=False))