remove method

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

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