|
from sys import exit as exiter |
|
|
|
from pymongo import MongoClient |
|
from pymongo.errors import PyMongoError |
|
|
|
from Mikobot import DB_NAME, LOGGER, MONGO_DB_URI |
|
|
|
try: |
|
Mikobot_db_client = MongoClient(MONGO_DB_URI) |
|
except PyMongoError as f: |
|
LOGGER.error(f"Error in Mongodb: {f}") |
|
exiter(1) |
|
Mikobot_main_db = Mikobot_db_client[DB_NAME] |
|
|
|
|
|
class MongoDB: |
|
"""Class for interacting with Bot database.""" |
|
|
|
def __init__(self, collection) -> None: |
|
self.collection = Mikobot_main_db[collection] |
|
|
|
|
|
def insert_one(self, document): |
|
result = self.collection.insert_one(document) |
|
return repr(result.inserted_id) |
|
|
|
|
|
def find_one(self, query): |
|
result = self.collection.find_one(query) |
|
if result: |
|
return result |
|
return False |
|
|
|
|
|
def find_all(self, query=None): |
|
if query is None: |
|
query = {} |
|
return list(self.collection.find(query)) |
|
|
|
|
|
def count(self, query=None): |
|
if query is None: |
|
query = {} |
|
return self.collection.count_documents(query) |
|
|
|
|
|
def delete_one(self, query): |
|
self.collection.delete_many(query) |
|
return self.collection.count_documents({}) |
|
|
|
|
|
def replace(self, query, new_data): |
|
old = self.collection.find_one(query) |
|
_id = old["_id"] |
|
self.collection.replace_one({"_id": _id}, new_data) |
|
new = self.collection.find_one({"_id": _id}) |
|
return old, new |
|
|
|
|
|
def update(self, query, update): |
|
result = self.collection.update_one(query, {"$set": update}) |
|
new_document = self.collection.find_one(query) |
|
return result.modified_count, new_document |
|
|
|
@staticmethod |
|
def close(): |
|
return Mikobot_db_client.close() |
|
|
|
|
|
def __connect_first(): |
|
_ = MongoDB("test") |
|
LOGGER.info("Initialized Mongo Database!\n") |
|
|
|
|
|
__connect_first() |
|
|