mirror of
https://github.com/hinto-janai/cuprate.git
synced 2025-03-21 14:48:46 +00:00
* cargo: replace `sanakirja` with `redb` * database: update docs `sanakirja` -> `redb` * lib: add TODO for `ConcreteEnv` generic replacement * database: split `trait Database` -> `trait Database{Read,Write}` * heed: add `struct HeedTable{Ro,Rw}` to match `redb` behavior * ops: remove imports for now * env: fix `&mut` bound on RwTx * database: impl `redb`, type-checks * fix heed trait impls, `Database{Read,Write}` -> `Database{Ro,Rw}` * redb: impl `From<_>` for `RuntimeError` * update readme * heed: document `HeedTableR{o,w}` types * env: doc `sync()` invariant * database: document data & lock filenames * misc docs, `redb` durability impl, `'db` -> `'env` * redb: fixes * misc docs and fixes * Update database/README.md Co-authored-by: Boog900 <boog900@tutanota.com> --------- Co-authored-by: Boog900 <boog900@tutanota.com>
45 lines
1.4 KiB
Rust
45 lines
1.4 KiB
Rust
//! Abstracted database; `trait DatabaseRo` & `trait DatabaseRw`.
|
|
|
|
//---------------------------------------------------------------------------------------------------- Import
|
|
use crate::{error::RuntimeError, table::Table};
|
|
|
|
//---------------------------------------------------------------------------------------------------- DatabaseRo
|
|
/// Database (key-value store) read abstraction.
|
|
///
|
|
/// TODO: document relation between `DatabaseRo` <-> `DatabaseRw`.
|
|
pub trait DatabaseRo<T: Table> {
|
|
/// TODO
|
|
/// # Errors
|
|
/// TODO
|
|
fn get(&self, key: &T::Key) -> Result<Option<T::Value>, RuntimeError>;
|
|
|
|
/// TODO
|
|
/// # Errors
|
|
/// TODO
|
|
fn get_range(
|
|
&self,
|
|
key: &T::Key,
|
|
amount: usize,
|
|
) -> Result<impl Iterator<Item = T::Value>, RuntimeError>;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------------------------------- DatabaseRw
|
|
/// Database (key-value store) read/write abstraction.
|
|
///
|
|
/// TODO: document relation between `DatabaseRo` <-> `DatabaseRw`.
|
|
pub trait DatabaseRw<T: Table>: DatabaseRo<T> {
|
|
/// TODO
|
|
/// # Errors
|
|
/// TODO
|
|
fn put(&mut self, key: &T::Key, value: &T::Value) -> Result<(), RuntimeError>;
|
|
|
|
/// TODO
|
|
/// # Errors
|
|
/// TODO
|
|
fn clear(&mut self) -> Result<(), RuntimeError>;
|
|
|
|
/// TODO
|
|
/// # Errors
|
|
/// TODO
|
|
fn delete(&mut self, key: &T::Key) -> Result<bool, RuntimeError>;
|
|
}
|