reth_db_api/
transaction.rs
1use crate::{
2 cursor::{DbCursorRO, DbCursorRW, DbDupCursorRO, DbDupCursorRW},
3 table::{DupSort, Encode, Table},
4 DatabaseError,
5};
6use std::fmt::Debug;
7
8pub trait DbTx: Debug + Send + Sync {
10 type Cursor<T: Table>: DbCursorRO<T> + Send + Sync;
12 type DupCursor<T: DupSort>: DbDupCursorRO<T> + DbCursorRO<T> + Send + Sync;
14
15 fn get<T: Table>(&self, key: T::Key) -> Result<Option<T::Value>, DatabaseError>;
17 fn get_by_encoded_key<T: Table>(
21 &self,
22 key: &<T::Key as Encode>::Encoded,
23 ) -> Result<Option<T::Value>, DatabaseError>;
24 fn commit(self) -> Result<bool, DatabaseError>;
27 fn abort(self);
29 fn cursor_read<T: Table>(&self) -> Result<Self::Cursor<T>, DatabaseError>;
31 fn cursor_dup_read<T: DupSort>(&self) -> Result<Self::DupCursor<T>, DatabaseError>;
33 fn entries<T: Table>(&self) -> Result<usize, DatabaseError>;
35 fn disable_long_read_transaction_safety(&mut self);
37}
38
39pub trait DbTxMut: Send + Sync {
41 type CursorMut<T: Table>: DbCursorRW<T> + DbCursorRO<T> + Send + Sync;
43 type DupCursorMut<T: DupSort>: DbDupCursorRW<T>
45 + DbCursorRW<T>
46 + DbDupCursorRO<T>
47 + DbCursorRO<T>
48 + Send
49 + Sync;
50
51 fn put<T: Table>(&self, key: T::Key, value: T::Value) -> Result<(), DatabaseError>;
53 fn delete<T: Table>(&self, key: T::Key, value: Option<T::Value>)
55 -> Result<bool, DatabaseError>;
56 fn clear<T: Table>(&self) -> Result<(), DatabaseError>;
58 fn cursor_write<T: Table>(&self) -> Result<Self::CursorMut<T>, DatabaseError>;
60 fn cursor_dup_write<T: DupSort>(&self) -> Result<Self::DupCursorMut<T>, DatabaseError>;
62}