removeMany method

  1. @override
Future<int> removeMany(
  1. List keys, {
  2. bool skipCommit = false,
})
override

Bulk delete — removes every key in keys. Returns the count of keys actually removed (race-tolerant: input keys may already have been deleted).

Implementation

@override
Future<int> removeMany(List keys, {bool skipCommit = false}) async {
  if (keys.isEmpty) return 0;
  final box = _getBox();
  final present = <dynamic>{};
  for (final k in keys) {
    if (present.contains(k)) continue;
    if (box.keys.contains(k)) present.add(k);
  }
  if (present.isEmpty) return 0;
  // preRemoveHooks per present key.
  for (final k in present) {
    for (final hook in preRemoveHooks) {
      await hook(k, skipCommit: skipCommit);
    }
  }
  await box.deleteAll(present);
  for (final k in present) {
    _expiryIndex.remove(k);
  }
  // postRemoveHooks per present key.
  for (final k in present) {
    for (final hook in postRemoveHooks) {
      await hook(k, skipCommit: skipCommit);
    }
  }
  // Emit a KeyRemoved event per actually-removed key.
  for (final k in present) {
    _changesController.add(KeyRemoved(k as String));
  }
  return present.length;
}