rskit_cache/adapters/fs/
registration.rs1use 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
24pub fn register_file_cache(registry: &mut CacheRegistry, config: FileCacheConfig) -> AppResult<()> {
26 registry.register("fs", Arc::new(FileFactory { config }))
27}