Skip to main content

rskit_cache/adapters/fs/
registration.rs

1use std::sync::Arc;
2
3use rskit_errors::AppResult;
4
5use crate::{CacheConfig, CacheRegistry, CacheStore, CacheStoreFactory};
6
7use super::{FileCache, FileCacheConfig};
8
9struct FileFactory {
10    config: FileCacheConfig,
11}
12
13#[async_trait::async_trait]
14impl CacheStoreFactory for FileFactory {
15    async fn create(&self, config: &CacheConfig) -> AppResult<Arc<dyn CacheStore>> {
16        let mut fs = self.config.clone();
17        if fs.key_prefix.is_none() {
18            fs.key_prefix.clone_from(&config.key_prefix);
19        }
20        Ok(Arc::new(FileCache::new(fs)))
21    }
22}
23
24/// Explicitly register the filesystem adapter.
25pub fn register_file_cache(registry: &mut CacheRegistry, config: FileCacheConfig) -> AppResult<()> {
26    registry.register("fs", Arc::new(FileFactory { config }))
27}