use thiserror::Error;
#[derive(Debug, Error)]
pub enum EmbeddingError {
#[error("invalid embedding config: {0}")]
Config(String),
#[error("invalid embedding request: {0}")]
InvalidRequest(String),
#[error("embedding provider returned {status}: {message}")]
Provider {
status: u16,
message: String,
},
#[error("failed to decode embedding response: {0}")]
Decode(String),
#[error("embedding transport failure: {0}")]
Transport(String),
}
pub type Result<T> = std::result::Result<T, EmbeddingError>;
impl From<reqwest::Error> for EmbeddingError {
fn from(err: reqwest::Error) -> Self {
if let Some(status) = err.status() {
EmbeddingError::Provider {
status: status.as_u16(),
message: err.to_string(),
}
} else {
EmbeddingError::Transport(err.to_string())
}
}
}