diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-01-24 04:31:48 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-01-24 04:31:48 +0100 |
| commit | b2e88a8beabf04adc28947cf82996e8692a68b71 (patch) | |
| tree | 23d66c8672b69cce7835ffabae4092669062ada8 /database/src/backends/mod.rs | |
| parent | 774f64c0789529884dd7a5232f190e347ad29532 (diff) | |
| download | jellything-b2e88a8beabf04adc28947cf82996e8692a68b71.tar jellything-b2e88a8beabf04adc28947cf82996e8692a68b71.tar.bz2 jellything-b2e88a8beabf04adc28947cf82996e8692a68b71.tar.zst | |
move things around; kv crate
Diffstat (limited to 'database/src/backends/mod.rs')
| -rw-r--r-- | database/src/backends/mod.rs | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/database/src/backends/mod.rs b/database/src/backends/mod.rs deleted file mode 100644 index 1a3998f..0000000 --- a/database/src/backends/mod.rs +++ /dev/null @@ -1,49 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2026 metamuffin <metamuffin.org> -*/ - -mod memory; -mod redb; -mod rocksdb; - -use anyhow::{Result, bail}; -use std::{path::Path, sync::Arc}; - -pub use memory::new as new_memory; -pub use redb::new as new_redb; -pub use rocksdb::new as new_rocksdb; - -pub type WriteTxnFunction = dyn FnMut(&mut dyn WriteTransaction) -> Result<()>; -pub type ReadTxnFunction = dyn FnMut(&dyn ReadTransaction) -> Result<()>; - -pub trait Database: Send + Sync + 'static { - fn write_transaction( - &self, - f: &mut dyn FnMut(&mut dyn WriteTransaction) -> Result<()>, - ) -> Result<()>; - fn read_transaction(&self, f: &mut dyn FnMut(&dyn ReadTransaction) -> Result<()>) - -> Result<()>; -} -pub trait WriteTransaction: ReadTransaction { - fn set(&mut self, key: &[u8], value: &[u8]) -> Result<()>; - fn del(&mut self, key: &[u8]) -> Result<()>; -} -pub trait ReadTransaction { - fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>>; - fn iter<'a>( - &'a self, - key: &[u8], - reverse: bool, - ) -> Result<Box<dyn Iterator<Item = Result<Vec<u8>>> + 'a>>; -} - -pub fn create_database(driver: &str, path: &Path) -> Result<Arc<dyn Database>> { - Ok(match driver { - "rocksdb" => Arc::new(rocksdb::new(path)?), - "redb" => Arc::new(redb::new(path)?), - "memory" => Arc::new(memory::new()), - _ => bail!("unknown db driver"), - }) -} |