Spaces:
Sleeping
Sleeping
| from typing import Any, Dict, List | |
| from pymongo import MongoClient | |
| from pymongo.errors import PyMongoError | |
| import os | |
| from dotenv import load_dotenv | |
| import unittest | |
| load_dotenv() | |
| def mongo_db_uri(): | |
| return os.getenv("MONGODB_URI") | |
| class MongoDBHandler: | |
| def __init__( | |
| self, | |
| uri: str = os.getenv("MONGODB_URI") or mongo_db_uri(), | |
| db_name: str = os.getenv("MONGODB_DB") or "search-arena", | |
| collection_name: str = os.getenv("MONGODB_COLLECTION") or "search-arena-usage", | |
| *args, | |
| **kwargs | |
| ) -> None: | |
| """ | |
| Initializes the MongoDBHandler with the specified database and collection. | |
| Args: | |
| uri (str): The MongoDB URI connection string. | |
| db_name (str): The name of the database. | |
| collection_name (str): The name of the collection. | |
| """ | |
| self.client = MongoClient(uri, *args, **kwargs) | |
| self.db = self.client[db_name] | |
| self.collection = self.db[collection_name] | |
| def add(self, document: Dict[str, Any]) -> None: | |
| """ | |
| Adds a document to the MongoDB collection. | |
| Args: | |
| document (Dict[str, Any]): The document to be added to the collection. | |
| Raises: | |
| PyMongoError: If an error occurs while inserting the document. | |
| """ | |
| try: | |
| self.collection.insert_one(document) | |
| except PyMongoError as e: | |
| print(f"Error: {e}") | |
| raise | |
| def update(self, query: Dict[str, Any], update: Dict[str, Any]) -> None: | |
| """ | |
| Updates documents in the MongoDB collection based on the provided query and update. | |
| Args: | |
| query (Dict[str, Any]): The query to filter documents. | |
| update (Dict[str, Any]): The update to apply to the documents. | |
| Raises: | |
| PyMongoError: If an error occurs while updating the documents. | |
| """ | |
| try: | |
| self.collection.update_many(query, update) | |
| except PyMongoError as e: | |
| print(f"Error: {e}") | |
| raise | |
| def query(self, query: Dict[str, Any]) -> List[Dict[str, Any]]: | |
| """ | |
| Queries documents from the MongoDB collection based on the provided query. | |
| Args: | |
| query (Dict[str, Any]): The query to filter documents. | |
| Returns: | |
| List[Dict[str, Any]]: A list of documents that match the query. | |
| Raises: | |
| PyMongoError: If an error occurs while querying the documents. | |
| """ | |
| try: | |
| return list(self.collection.find(query)) | |
| except PyMongoError as e: | |
| print(f"Error: {e}") | |
| raise |