diff options
Diffstat (limited to 'cache/src/backends/mod.rs')
| -rw-r--r-- | cache/src/backends/mod.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/cache/src/backends/mod.rs b/cache/src/backends/mod.rs index 6b7dac3..5872255 100644 --- a/cache/src/backends/mod.rs +++ b/cache/src/backends/mod.rs @@ -4,10 +4,23 @@ Copyright (C) 2025 metamuffin <metamuffin.org> */ pub mod filesystem; +pub mod rocksdb; -use anyhow::Result; +use crate::{ + CONF, + backends::{filesystem::Filesystem, rocksdb::Rocksdb}, +}; +use anyhow::{Result, bail}; pub(crate) trait CacheStorage: Send + Sync + 'static { fn store(&self, key: String, value: &[u8]) -> Result<()>; fn read(&self, key: &str) -> Result<Option<Vec<u8>>>; } + +pub fn init_backend() -> Result<Box<dyn CacheStorage>> { + Ok(match CONF.driver.as_str() { + "filesystem" => Box::new(Filesystem::new(&CONF)), + "rocksdb" => Box::new(Rocksdb::new(&CONF)?), + _ => bail!("unknown driver"), + }) +} |