use rig::vector_store::{VectorStoreError, request::FilterError};
#[derive(Debug, thiserror::Error)]
pub enum MemvidError {
#[error("memvid error: {0}")]
Memvid(#[from] memvid_core::MemvidError),
#[error("i/o error: {0}")]
Io(#[from] std::io::Error),
#[error("serialization error: {0}")]
Serde(#[from] serde_json::Error),
#[error("unsupported filter clause: {0}")]
UnsupportedFilter(String),
#[error("memvid store mutex poisoned")]
Poisoned,
}
impl From<MemvidError> for VectorStoreError {
fn from(err: MemvidError) -> Self {
match err {
MemvidError::Serde(e) => VectorStoreError::JsonError(e),
MemvidError::UnsupportedFilter(msg) => {
VectorStoreError::FilterError(FilterError::TypeError(msg))
}
other => VectorStoreError::DatastoreError(Box::new(other)),
}
}
}