1use 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
11pub type MockL2SemanticCache = L2SemanticCache<MockBqClient, MockStorageLoader>;
13
14impl L2SemanticCache<MockBqClient, MockStorageLoader> {
15 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}