removeMany method

  1. @override
Future<int> removeMany(
  1. List<String> 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<String> keys, {bool skipCommit = false}) async {
  final normalized = keys.map(_normalize).toSet().toList();
  var removed = 0;
  final toFire = <String>[];
  _db.runInTransaction(() {
    for (final k in normalized) {
      if (!_existsSync(k)) continue;
      _db.raw.execute('DELETE FROM at_data WHERE atkey = ?;', [k]);
      if (skipCommit) {
        _sqliteCommitLog?.purgeSync(k);
      } else {
        _commitOrNull(k, CommitOp.DELETE);
      }
      removed++;
      toFire.add(k);
    }
  });
  for (final k in toFire) {
    _changes.add(KeyRemoved(k));
  }
  return removed;
}