use cel_memory::MemoryError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum PostgresMemoryError {
#[error("postgres error: {0}")]
Sqlx(#[from] sqlx::Error),
#[error("migration failed: {0}")]
Migration(String),
#[error("embedding dim mismatch: provider expects {expected}, embedder declares {actual}")]
DimMismatch {
expected: usize,
actual: usize,
},
#[error("json error: {0}")]
Json(#[from] serde_json::Error),
}
impl From<PostgresMemoryError> for MemoryError {
fn from(e: PostgresMemoryError) -> Self {
match e {
PostgresMemoryError::DimMismatch { expected, actual } => MemoryError::InvalidArgument(
format!("embedding dim mismatch: expected {expected}, got {actual}"),
),
PostgresMemoryError::Json(err) => MemoryError::Storage(format!("json: {err}")),
other => MemoryError::Storage(other.to_string()),
}
}
}