delete method

  1. @override
Future<int> delete({
  1. Filter<EntityBase> where(
    1. TMeta t
    )?,
  2. bool? useIsolate,
  3. bool all = false,
})

Implementation

@override
Future<int> delete({
  Filter Function(TMeta t)? where,
  bool? useIsolate,
  bool all = false,
}) async {
  assert(
    all || where != null,
    'Either provide where query or specify all = true to delete all.',
  );

  final items = await getItems() ?? {};
  if (where == null) {
    return items.length;
  }
  final filters = where(t).filters;
  final res = items.entries
      .where(
        (element) {
          return _where(element, filters);
        },
      )
      .map((e) => e.key)
      .toList();

  items.removeWhere((key, value) => res.contains(key));
  await (await prefs).setString(t.tableName, jsonEncode(items));
  return res.length;
}