remove method
Removes the mapping for key if present. Overrides
KeyValueStore.remove:
skipCommit— as for put: no DELETE entry is written AND the key's existing commit entry is purged.deletedAt— caller-asserted deletion time, recorded as the DELETE commit entry'sopTime(truncated to millisecond precision). Ignored whenskipCommitis true — there is no entry to stamp.
Implementation
@override
Future<int?> remove(String key,
{bool skipCommit = false, DateTime? deletedAt}) 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, opTime: deletedAt);
});
_changes.add(KeyRemoved(k));
for (final hook in postRemoveHooks) {
await hook(lowered, skipCommit: skipCommit);
}
return result;
}