Example #1
0
 def delete_one(self, _filter: dict, **kwargs) -> QueryResult:
     match = filter_data(_filter, self._data)
     if match != ():
         self._data.remove(match[0])
         return QueryResult(deleted_count=1)
     else:
         return QueryResult(deleted_count=0)
Example #2
0
 def find_one(self, _filter: dict = {}, **kwargs) -> dict:
     if _filter == {}:
         return self._data[0]
     else:
         try:
             inverse = kwargs['inverse']
         except KeyError:
             inverse = False
         results = filter_data(_filter, self._data, inverse=inverse)
         return results[0]
Example #3
0
 def find(self, _filter: dict = {}, **kwargs) -> QueryResult:
     if _filter == {}:
         matched_count = len(self._data)
         return QueryResult(*self._data, matched_count=matched_count)
     else:
         try:
             inverse = kwargs['inverse']
         except KeyError:
             inverse = False
         matched = filter_data(_filter, self._data, inverse=inverse)
         matched_count = len(matched)
         return QueryResult(*matched, matched_count=matched_count)
Example #4
0
    def update_many(self, _filter: dict, _update: dict, **kwargs) -> str:
        match = filter_data(_filter, self._data)
        matched_count = len(match)
        updated_count = 0

        if matched_count == 0:
            return QueryResult(matched_count=0)

        for i, j in enumerate(self._data):
            if updated_count < matched_count:
                if j in match:
                    self._data[i] = _update
                    updated_count += 1
            else:
                return QueryResult(matched_count=matched_count,
                                   updated_count=updated_count)
Example #5
0
    def delete_many(self, _filter: dict = {}, **kwargs) -> QueryResult:
        deleted_count = 0
        if _filter == {}:
            deleted_count = len(self._data)
            self._data = []
            return QueryResult(deleted_count=deleted_count)

        match = filter_data(_filter, self._data)
        matched_count = len(match)
        if matched_count == 0:
            return QueryResult(matched_count=0)

        for i, j in enumerate(self._data):
            if deleted_count <= matched_count:
                if j in match:
                    self._data.pop(i)
                    deleted_count += 1
            else:
                return QueryResult(deleted_count=deleted_count)