from pymongo import MongoClient


class UseDB:
    """
    Класс для работы с базой данных
    """
    def __init__(self, collection_name):
        self.series_collection = None
        self.client = MongoClient('localhost', 27017)
        self.db = self.client['toads']
        self.series_collection = self.db[collection_name]

    def find_document(self, elements: dict) -> list:
        """
        Функция поиска элемента в базе данных

        :param elements: dict - элемент, который надо искать

        :return: list - сам элемент
        """
        return [x for x in self.series_collection.find(elements)]

    def insert_document(self, data: dict) -> list:
        """
        Функция добавления элемента в базу данных

        :param data: dict - элемент, который надо добавить

        :return: list - созданный элемент
        """
        return self.series_collection.insert_one(data).inserted_id

    def update_document(self, query_elements: dict, new_values: dict) -> None:
        """
        Функция обновления элемента в базе данных

        :param query_elements: dict - элемент, который надо обновить

        :param new_values: dict - элемент, этот самый элемент

        :return: None
        """
        self.series_collection.update_one(query_elements, {'$set': new_values})

    def del_document(self, query_elements: dict) -> None:
        """
        Функция удаления элемента в базу данных

        :param query_elements: dict - элемент, который надо удалить

        :return: None
        """
        self.series_collection.delete_one(query_elements)
