remove method
Removes the mapping for key if present.
Returns the commit-log sequence number assigned to this
deletion, or null if no sequence number was produced.
Throws a DataStoreException if the underlying store fails.
Implementation
@override
Future<int?> remove(String key, {bool skipCommit = false}) async {
final lowered = key.toLowerCase();
for (final hook in preRemoveHooks) {
await hook(lowered, skipCommit: skipCommit);
}
final k = _normalize(key);
final result = _db.runInTransaction(() {
_db.raw.execute('DELETE FROM at_data WHERE atkey = ?;', [k]);
if (skipCommit) {
_sqliteCommitLog?.purgeSync(k);
return -1;
}
return _commitOrNull(k, CommitOp.DELETE);
});
_changes.add(KeyRemoved(k));
for (final hook in postRemoveHooks) {
await hook(lowered, skipCommit: skipCommit);
}
return result;
}