Trait sp_database::Database
source · pub trait Database<H: Clone + AsRef<[u8]>>: Send + Sync {
// Required methods
fn commit(&self, transaction: Transaction<H>) -> Result<()>;
fn get(&self, col: ColumnId, key: &[u8]) -> Option<Vec<u8>>;
// Provided methods
fn contains(&self, col: ColumnId, key: &[u8]) -> bool { ... }
fn value_size(&self, col: ColumnId, key: &[u8]) -> Option<usize> { ... }
fn with_get(&self, col: ColumnId, key: &[u8], f: &mut dyn FnMut(&[u8])) { ... }
fn supports_ref_counting(&self) -> bool { ... }
fn sanitize_key(&self, _key: &mut Vec<u8>) { ... }
}
Required Methods§
sourcefn 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.
Provided Methods§
sourcefn contains(&self, col: ColumnId, key: &[u8]) -> bool
fn contains(&self, col: ColumnId, key: &[u8]) -> bool
Check if the value exists in the database without retrieving it.
sourcefn value_size(&self, col: ColumnId, key: &[u8]) -> Option<usize>
fn value_size(&self, col: ColumnId, key: &[u8]) -> Option<usize>
Check value size in the database possibly without retrieving it.
sourcefn with_get(&self, col: ColumnId, key: &[u8], f: &mut dyn FnMut(&[u8]))
fn with_get(&self, col: ColumnId, key: &[u8], f: &mut dyn FnMut(&[u8]))
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
sourcefn supports_ref_counting(&self) -> bool
fn supports_ref_counting(&self) -> bool
Check if database supports internal ref counting for state data.
For backwards compatibility returns false
by default.
sourcefn sanitize_key(&self, _key: &mut Vec<u8>)
fn sanitize_key(&self, _key: &mut Vec<u8>)
Remove a possible path-prefix from the key.
Not all database implementations use a prefix for keys, so this function may be a noop.