remove method

  1. @override
Future<int?> remove(
  1. String key, {
  2. bool skipCommit = false,
  3. DateTime? deletedAt,
})
override

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's opTime (truncated to millisecond precision). Ignored when skipCommit is 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;
}