reflex/cache/l2/
mock.rs

1//! Mock L2 cache helpers (in-memory storage + mock vector DB).
2
3use crate::embedding::sinter::{SinterConfig, SinterEmbedder};
4use crate::vectordb::bq::MockBqClient;
5
6use super::cache::L2SemanticCache;
7use super::config::L2Config;
8use super::error::{L2CacheError, L2CacheResult};
9use super::loader::MockStorageLoader;
10
11/// Type alias for an L2 cache backed by mocks.
12pub type MockL2SemanticCache = L2SemanticCache<MockBqClient, MockStorageLoader>;
13
14impl L2SemanticCache<MockBqClient, MockStorageLoader> {
15    /// Creates a mock L2 cache and ensures the collection exists.
16    pub async fn new_mock(config: L2Config) -> L2CacheResult<Self> {
17        let embedder_config = SinterConfig::stub();
18        let embedder =
19            SinterEmbedder::load(embedder_config).map_err(|e| L2CacheError::EmbeddingFailed {
20                reason: e.to_string(),
21            })?;
22
23        let bq_backend = MockBqClient::with_config(config.bq_config.clone());
24        let storage = MockStorageLoader::new();
25
26        let cache = Self::new(embedder, bq_backend, storage, config)?;
27
28        cache.ensure_collection().await?;
29
30        Ok(cache)
31    }
32}