2021-09-25 16:49:11 +02:00
|
|
|
from urllib.parse import quote_plus
|
|
|
|
|
|
|
|
from config.credentials import (MONGODB_DATABASE, MONGODB_HOSTNAME,
|
|
|
|
MONGODB_PASSWORD, MONGODB_PORT,
|
|
|
|
MONGODB_USERNAME)
|
2021-09-25 16:49:11 +02:00
|
|
|
from pymongo import MongoClient
|
|
|
|
from pymongo.database import Database
|
|
|
|
|
2021-09-25 16:49:11 +02:00
|
|
|
|
|
|
|
class Client():
|
2021-09-28 17:03:11 +02:00
|
|
|
mongo_client: MongoClient
|
2021-09-25 16:49:11 +02:00
|
|
|
database: Database
|
|
|
|
|
|
|
|
def __init__(self) -> None:
|
|
|
|
uri = "mongodb://%s:%s@%s:%s/%s?authSource=admin" % (
|
|
|
|
MONGODB_USERNAME, quote_plus(MONGODB_PASSWORD),
|
|
|
|
MONGODB_HOSTNAME, MONGODB_PORT, MONGODB_DATABASE
|
|
|
|
)
|
|
|
|
|
2021-09-28 17:03:11 +02:00
|
|
|
self.mongo_client = MongoClient(uri)
|
|
|
|
self.database = self.mongo_client[MONGODB_DATABASE]
|
2021-09-25 16:49:11 +02:00
|
|
|
|
2021-09-28 17:03:11 +02:00
|
|
|
def insert_one(self, collection: str, data: dict) -> None:
|
2021-09-25 16:49:11 +02:00
|
|
|
self.database.get_collection(collection).insert_one(data)
|
|
|
|
|
2021-09-28 17:03:11 +02:00
|
|
|
def find_one(self, collection: str, query: dict) -> dict:
|
2021-09-25 16:49:11 +02:00
|
|
|
return self.database.get_collection(collection).find_one(query)
|
|
|
|
|
2021-09-28 17:03:11 +02:00
|
|
|
def find_many(self, collection: str, filter: dict) -> dict:
|
2021-09-25 16:49:11 +02:00
|
|
|
return self.database.get_collection(collection).find(filter)
|
|
|
|
|
2021-09-28 17:03:11 +02:00
|
|
|
def update_one(self, collection: str, filter: dict, data: dict) -> None:
|
2021-09-25 16:49:11 +02:00
|
|
|
self.database.get_collection(collection).update_one(
|
|
|
|
filter,
|
|
|
|
{ "$set" : data }
|
|
|
|
)
|
2021-09-28 21:28:33 +02:00
|
|
|
|
|
|
|
def aggregate(self, collection, pipeline: list):
|
2021-10-01 10:51:17 +02:00
|
|
|
return self.database.get_collection(collection).aggregate(pipeline)
|