diff --git a/src/database/raw.rs b/src/database/raw.rs index df0e641..e4de09a 100644 --- a/src/database/raw.rs +++ b/src/database/raw.rs @@ -48,4 +48,11 @@ impl RawTable< )?; Ok(()) } + + /// Returns true if the key was present. + pub fn delete<'txn>(&self, txn: &Txn<'txn, RW>, k: impl AsRef) -> anyhow::Result { + Ok(txn + .mdbx_txn + .del(self.borrow_mdbx_db(), k.as_ref().as_byte_slice(), None)?) + } } diff --git a/src/database/wrapped.rs b/src/database/wrapped.rs index 3de0ef9..53f6895 100644 --- a/src/database/wrapped.rs +++ b/src/database/wrapped.rs @@ -45,4 +45,18 @@ impl WrappedTable { self.raw.put(txn, k_bytes, v_bytes)?; Ok(()) } + + /// Returns true if the key was present. + pub fn delete<'txn>( + &self, + txn: &Txn<'txn, RW>, + k: impl AsRef, + ) -> anyhow::Result { + let k_bytes = self + .k_wrapper + .dump_to_db_bytes(k.as_ref()) + .context("whilst converting key to bytes")?; + + self.raw.delete(txn, k_bytes) + } }