khive-db 0.12.0

SQLite storage backend: entities, edges, notes, events, FTS5, sqlite-vec vectors.
Documentation
use std::sync::Arc;

use khive_storage::{
    SparseStore, SparseStoreFactory, StorageCapability, StorageResult, TextSearch,
    TextSearchFactory, VectorStore, VectorStoreFactory,
};

use super::core_stores::map_open_error;
use super::StorageBackend;

impl VectorStoreFactory for StorageBackend {
    fn open(
        &self,
        model_key: &str,
        embedding_model: &str,
        dimensions: usize,
        namespace: &str,
    ) -> StorageResult<Arc<dyn VectorStore>> {
        self.vectors_for_namespace(model_key, embedding_model, dimensions, namespace)
            .map_err(|error| {
                map_open_error(error, StorageCapability::Vectors, "vectors_for_namespace")
            })
    }
}

impl SparseStoreFactory for StorageBackend {
    fn open(&self, model_key: &str, namespace: &str) -> StorageResult<Arc<dyn SparseStore>> {
        self.sparse_for_namespace(model_key, namespace)
            .map_err(|error| {
                map_open_error(error, StorageCapability::Sparse, "sparse_for_namespace")
            })
    }
}

impl TextSearchFactory for StorageBackend {
    fn open(&self, table_key: &str, tokenizer: &str) -> StorageResult<Arc<dyn TextSearch>> {
        self.text_with_tokenizer(table_key, tokenizer)
            .map_err(|error| map_open_error(error, StorageCapability::Text, "text_with_tokenizer"))
    }
}

#[cfg(test)]
mod tests;