def test_update_multiple_operation(db: TinyDB): def increment(field): def transform(el): el[field] += 1 return transform assert db.count(where('int') == 1) == 3 db.update_multiple([(increment('int'), where('char') == 'a'), (increment('int'), where('char') == 'b')]) assert db.count(where('int') == 2) == 2
def test_update_multiple(db: TinyDB): assert len(db) == 3 db.update_multiple([ ({ 'int': 2 }, where('char') == 'a'), ({ 'int': 4 }, where('char') == 'b'), ]) assert db.count(where('int') == 1) == 1 assert db.count(where('int') == 2) == 1 assert db.count(where('int') == 4) == 1
class DataStore(): """ Класс предназначен для работы с системой хранения данных Возвращается структуры типа Dict, а хранит данные в том виде в котором это предполагает используемый адаптер для разных структур может использовать разные адаптеры поддерживаемые системы хранения: TinyDB """ data_store = None def __init__(self, _type): """ Возвращается объект хранилища данных по указанному типу данных @params: _type - Required : тип данных (String) """ self.data_store = TinyDB("data/" + _type + ".json") def get_rows(self, _filter=None): """ Возвращается записи, которые соответствуют заданному критерию из заданной таблицы в виде списка Dict @params: _filter - Optional : срока с заданным фильтром (String) """ result = [] if _filter is not None: result = self.data_store.search(Query().fragment(_filter)) else: result = self.data_store.all() return result def get_row_by_id(self, _id): """ Возвращается записи, которые соответствуют заданному критерию из заданной таблицы в виде списка Dict @params: _filter - Optional : срока с заданным фильтром (String) """ result = None if _id != '': result = self.data_store.get(doc_id=int(_id)) return result def get_rows_count(self, _filter=""): """ Возвращается количество записей, которые соответствуют заданному критерию из заданной таблицы @params: _filter - Optional : срока с заданным фильтром (String) """ result = 0 result = len(self.get_rows(_filter)) return result def add_row(self, _data): """ Добавить новую запись в хранилище Args: _data (Dict): структура данных для записи Returns: Int: id созданной записи """ result = self.data_store.insert(_data) return result def change_row(self, _data): """ Обновить запись в хранилище Args: _data (Dict): структура данных для записи """ self.data_store.update_multiple([({ "name": _data["name"], "email": _data["email"], "role": _data["role"], "probationers_number": _data["probationers_number"], "expires_date": _data["expires_date"], "access_time": _data["access_time"], "active": _data["active"] }, where("login") == _data["login"])]) def discharge_password(self, _data): """ Сброс пароля Args: _data (Dict): структура данных для записи """ self.data_store.update({"password": _data["password"]}, where("login") == _data["login"])