Abstract database behind generic interface and implement alternative drivers #322

Merged
lx merged 64 commits from db-abstraction into main 2022-06-08 08:01:56 +00:00
2 changed files with 6 additions and 5 deletions
Showing only changes of commit d41a67c4ee - Show all commits

View file

@ -35,10 +35,11 @@ pub struct Error(pub Cow<'static, str>);
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
#[error(display = "{}", _0)]
pub struct TxOpError(pub(crate) Error);
pub type TxOpResult<T> = std::result::Result<T, TxOpError>;
#[derive(Debug)]
pub enum TxError<E> {
Abort(E),
Db(Error),

View file

@ -203,12 +203,12 @@ impl IDb for LmdbDb {
// ----
struct LmdbTx<'a, 'db> {
trees: &'db [Database],
struct LmdbTx<'a> {
trees: &'a [Database],
tx: RwTxn<'a, 'a>,
}
impl<'a, 'db> LmdbTx<'a, 'db> {
impl<'a> LmdbTx<'a> {
fn get_tree(&self, i: usize) -> TxOpResult<&Database> {
self.trees.get(i).ok_or_else(|| {
TxOpError(Error(
@ -218,7 +218,7 @@ impl<'a, 'db> LmdbTx<'a, 'db> {
}
}
impl<'a, 'db> ITx for LmdbTx<'a, 'db> {
impl<'a> ITx for LmdbTx<'a> {
fn get(&self, tree: usize, key: &[u8]) -> TxOpResult<Option<Value>> {
let tree = self.get_tree(tree)?;
match tree.get(&self.tx, key)? {