Files
crank/crates/crank-runtime/src/cache_factory.rs
T
github-ops 3b9790e6f5
Deploy / deploy (push) Successful in 2m35s
CI / Rust Checks (push) Successful in 5m27s
CI / UI Checks (push) Successful in 5s
CI / Deployment Manifests (push) Successful in 3s
CI / Frontend E2E (push) Successful in 4m30s
chore: publish clean community baseline
2026-06-19 15:21:14 +00:00

46 lines
1.2 KiB
Rust

use std::sync::Arc;
use async_trait::async_trait;
use crate::{RuntimeCacheConfig, RuntimeCacheStoreInitError, RuntimeCacheStores};
#[async_trait]
pub trait CacheBackendFactory: Send + Sync {
async fn build(
&self,
config: &RuntimeCacheConfig,
) -> Result<RuntimeCacheStores, RuntimeCacheStoreInitError>;
}
pub type SharedCacheBackendFactory = Arc<dyn CacheBackendFactory>;
#[derive(Clone, Copy, Debug, Default)]
pub struct BuiltinCacheBackendFactory;
#[async_trait]
impl CacheBackendFactory for BuiltinCacheBackendFactory {
async fn build(
&self,
config: &RuntimeCacheConfig,
) -> Result<RuntimeCacheStores, RuntimeCacheStoreInitError> {
RuntimeCacheStores::from_config(config).await
}
}
#[cfg(test)]
mod tests {
use crate::{CacheBackendFactory, RuntimeCacheConfig};
use super::BuiltinCacheBackendFactory;
#[tokio::test]
async fn builtin_factory_builds_default_memory_stores() {
let stores = BuiltinCacheBackendFactory
.build(&RuntimeCacheConfig::default())
.await
.unwrap();
assert_eq!(stores.backend, crank_core::CacheBackend::Memory);
}
}