Trait sp_database::Database
source · [−]pub trait Database<H: Clone>: Send + Sync {
fn get(&self, col: ColumnId, key: &[u8]) -> Option<Vec<u8>>;
fn lookup(&self, hash: &H) -> Option<Vec<u8>>;
fn commit(&self, transaction: Transaction<H>) -> Result<()> { ... }
fn commit_ref<'a>(
&self,
transaction: &mut dyn Iterator<Item = ChangeRef<'a, H>>
) -> Result<()> { ... }
fn contains(&self, col: ColumnId, key: &[u8]) -> bool { ... }
fn with_get(&self, col: ColumnId, key: &[u8], f: &mut dyn FnMut(&[u8])) { ... }
fn set(&self, col: ColumnId, key: &[u8], value: &[u8]) -> Result<()> { ... }
fn remove(&self, col: ColumnId, key: &[u8]) -> Result<()> { ... }
fn with_lookup(&self, hash: &H, f: &mut dyn FnMut(&[u8])) { ... }
fn store(&self, hash: &H, preimage: &[u8]) -> Result<()> { ... }
fn release(&self, hash: &H) -> Result<()> { ... }
}
Required methods
Retrieve the value previously stored against key
or None
if
key
is not currently in the database.
Provided methods
fn commit(&self, transaction: Transaction<H>) -> Result<()>
fn commit(&self, transaction: Transaction<H>) -> Result<()>
Commit the transaction
to the database atomically. Any further calls to get
or lookup
will reflect the new state.
Commit the transaction
to the database atomically. Any further calls to get
or lookup
will reflect the new state.
Check if the value exists in the database without retrieving it.
Call f
with the value previously stored against key
.
This may be faster than get
since it doesn’t allocate.
Use with_get
helper function if you need f
to return a value from f
Set the value of key
in col
to value
, replacing anything that is there currently.
Call f
with the preimage stored for hash
and return the result, or None
if no preimage
is currently stored.
This may be faster than lookup
since it doesn’t allocate.
Use with_lookup
helper function if you need f
to return a value from f
Store the preimage
of hash
into the database, so that it may be looked up later with
Database::lookup
. This may be called multiple times, but Database::lookup
but subsequent
calls will ignore preimage
and simply increase the number of references on hash
.