mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-02-17 18:31:42 -05:00
62 lines
2.5 KiB
Rust
62 lines
2.5 KiB
Rust
use crate::{
|
|
cursor::{DbCursorRO, DbCursorRW, DbDupCursorRO, DbDupCursorRW},
|
|
table::{DupSort, Encode, Table},
|
|
DatabaseError,
|
|
};
|
|
|
|
/// Read only transaction
|
|
pub trait DbTx: Send + Sync {
|
|
/// Cursor type for this read-only transaction
|
|
type Cursor<T: Table>: DbCursorRO<T> + Send + Sync;
|
|
/// `DupCursor` type for this read-only transaction
|
|
type DupCursor<T: DupSort>: DbDupCursorRO<T> + DbCursorRO<T> + Send + Sync;
|
|
|
|
/// Get value by an owned key
|
|
fn get<T: Table>(&self, key: T::Key) -> Result<Option<T::Value>, DatabaseError>;
|
|
/// Get value by a reference to the encoded key, especially useful for "raw" keys
|
|
/// that encode to themselves like Address and B256. Doesn't need to clone a
|
|
/// reference key like `get`.
|
|
fn get_by_encoded_key<T: Table>(
|
|
&self,
|
|
key: &<T::Key as Encode>::Encoded,
|
|
) -> Result<Option<T::Value>, DatabaseError>;
|
|
/// Commit for read only transaction will consume and free transaction and allows
|
|
/// freeing of memory pages
|
|
fn commit(self) -> Result<bool, DatabaseError>;
|
|
/// Aborts transaction
|
|
fn abort(self);
|
|
/// Iterate over read only values in table.
|
|
fn cursor_read<T: Table>(&self) -> Result<Self::Cursor<T>, DatabaseError>;
|
|
/// Iterate over read only values in dup sorted table.
|
|
fn cursor_dup_read<T: DupSort>(&self) -> Result<Self::DupCursor<T>, DatabaseError>;
|
|
/// Returns number of entries in the table.
|
|
fn entries<T: Table>(&self) -> Result<usize, DatabaseError>;
|
|
/// Disables long-lived read transaction safety guarantees.
|
|
fn disable_long_read_transaction_safety(&mut self);
|
|
}
|
|
|
|
/// Read write transaction that allows writing to database
|
|
pub trait DbTxMut: Send + Sync {
|
|
/// Read-Write Cursor type
|
|
type CursorMut<T: Table>: DbCursorRW<T> + DbCursorRO<T> + Send + Sync;
|
|
/// Read-Write `DupCursor` type
|
|
type DupCursorMut<T: DupSort>: DbDupCursorRW<T>
|
|
+ DbCursorRW<T>
|
|
+ DbDupCursorRO<T>
|
|
+ DbCursorRO<T>
|
|
+ Send
|
|
+ Sync;
|
|
|
|
/// Put value to database
|
|
fn put<T: Table>(&self, key: T::Key, value: T::Value) -> Result<(), DatabaseError>;
|
|
/// Delete value from database
|
|
fn delete<T: Table>(&self, key: T::Key, value: Option<T::Value>)
|
|
-> Result<bool, DatabaseError>;
|
|
/// Clears database.
|
|
fn clear<T: Table>(&self) -> Result<(), DatabaseError>;
|
|
/// Cursor mut
|
|
fn cursor_write<T: Table>(&self) -> Result<Self::CursorMut<T>, DatabaseError>;
|
|
/// `DupCursor` mut.
|
|
fn cursor_dup_write<T: DupSort>(&self) -> Result<Self::DupCursorMut<T>, DatabaseError>;
|
|
}
|