removeMany method
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;
}