diff options
| author | metamuffin <metamuffin@disroot.org> | 2025-12-16 04:30:42 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2025-12-16 04:30:42 +0100 |
| commit | fc7f3ae8e39a0398ceba7b9c44f58679c01a98da (patch) | |
| tree | 77eef4d5e5ccb733b15ac4039e0a966f88ee8380 /database/src/backends/mod.rs | |
| parent | 0e48299889c3c2b81bf351ffe5da71e0bcd4c22a (diff) | |
| download | jellything-fc7f3ae8e39a0398ceba7b9c44f58679c01a98da.tar jellything-fc7f3ae8e39a0398ceba7b9c44f58679c01a98da.tar.bz2 jellything-fc7f3ae8e39a0398ceba7b9c44f58679c01a98da.tar.zst | |
tables
Diffstat (limited to 'database/src/backends/mod.rs')
| -rw-r--r-- | database/src/backends/mod.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/database/src/backends/mod.rs b/database/src/backends/mod.rs index b6d3770..814cc50 100644 --- a/database/src/backends/mod.rs +++ b/database/src/backends/mod.rs @@ -8,7 +8,9 @@ pub mod memory; pub mod redb; pub mod rocksdb; -use anyhow::Result; +use crate::backends::{memory::Memory, redb::Redb, rocksdb::Rocksdb}; +use anyhow::{Result, bail}; +use std::{path::Path, sync::Arc}; pub trait KV { fn set(&self, key: &[u8], value: &[u8]) -> Result<()>; @@ -17,3 +19,12 @@ pub trait KV { fn next(&self, key: &[u8]) -> Result<Option<Vec<u8>>>; fn prev(&self, key: &[u8]) -> Result<Option<Vec<u8>>>; } + +pub fn create_backend(driver: &str, path: &Path) -> Result<Arc<dyn KV>> { + Ok(match driver { + "rocksdb" => Arc::new(Rocksdb::new(path)?), + "redb" => Arc::new(Redb::new(path)?), + "memory" => Arc::new(Memory::new()), + _ => bail!("unknown db driver"), + }) +} |