khive_db/backend/
capability_factories.rs1use std::sync::Arc;
2
3use khive_storage::{
4 SparseStore, SparseStoreFactory, StorageCapability, StorageResult, TextSearch,
5 TextSearchFactory, VectorStore, VectorStoreFactory,
6};
7
8use super::core_stores::map_open_error;
9use super::StorageBackend;
10
11impl VectorStoreFactory for StorageBackend {
12 fn open(
13 &self,
14 model_key: &str,
15 embedding_model: &str,
16 dimensions: usize,
17 namespace: &str,
18 ) -> StorageResult<Arc<dyn VectorStore>> {
19 self.vectors_for_namespace(model_key, embedding_model, dimensions, namespace)
20 .map_err(|error| {
21 map_open_error(error, StorageCapability::Vectors, "vectors_for_namespace")
22 })
23 }
24}
25
26impl SparseStoreFactory for StorageBackend {
27 fn open(&self, model_key: &str, namespace: &str) -> StorageResult<Arc<dyn SparseStore>> {
28 self.sparse_for_namespace(model_key, namespace)
29 .map_err(|error| {
30 map_open_error(error, StorageCapability::Sparse, "sparse_for_namespace")
31 })
32 }
33}
34
35impl TextSearchFactory for StorageBackend {
36 fn open(&self, table_key: &str, tokenizer: &str) -> StorageResult<Arc<dyn TextSearch>> {
37 self.text_with_tokenizer(table_key, tokenizer)
38 .map_err(|error| map_open_error(error, StorageCapability::Text, "text_with_tokenizer"))
39 }
40}
41
42#[cfg(test)]
43mod tests;