feat: add cards functionals in MongoWorker

This commit is contained in:
IgorVolochay
2025-02-25 14:47:20 +03:00
parent c20f423057
commit d26136b152
+35 -2
View File
@@ -3,6 +3,7 @@ import os
import pymongo import pymongo
from schemas.base_schemas import * from schemas.base_schemas import *
from typing import Optional
from datetime import datetime from datetime import datetime
from dotenv import load_dotenv from dotenv import load_dotenv
@@ -19,6 +20,7 @@ class MongoWorker:
self.users_data = self.db["users_data"] self.users_data = self.db["users_data"]
self.game_data = self.db["game_data"] self.game_data = self.db["game_data"]
def check_user(self, user_id: int) -> bool: def check_user(self, user_id: int) -> bool:
if self.users_data.find_one({"user_id": user_id}): if self.users_data.find_one({"user_id": user_id}):
return True return True
@@ -42,8 +44,39 @@ class MongoWorker:
return User.model_validate(self.users_data.find_one({"user_id": user_id})) 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__": 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.get_random_cards(10, active_status=False))