use thiserror::Error;
pub type Result<T> = std::result::Result<T, TinyDancerError>;
#[derive(Error, Debug)]
pub enum TinyDancerError {
#[error("Model inference failed: {0}")]
InferenceError(String),
#[error("Feature engineering failed: {0}")]
FeatureError(String),
#[error("Storage operation failed: {0}")]
StorageError(String),
#[error("Circuit breaker triggered: {0}")]
CircuitBreakerError(String),
#[error("Invalid configuration: {0}")]
ConfigError(String),
#[error("Database error: {0}")]
DatabaseError(#[from] rusqlite::Error),
#[error("Serialization error: {0}")]
SerializationError(String),
#[error("Invalid input: {0}")]
InvalidInput(String),
#[error("Model not found: {0}")]
ModelNotFound(String),
#[error("Unknown error: {0}")]
Unknown(String),
}
impl From<serde_json::Error> for TinyDancerError {
fn from(err: serde_json::Error) -> Self {
TinyDancerError::SerializationError(err.to_string())
}
}
impl From<std::io::Error> for TinyDancerError {
fn from(err: std::io::Error) -> Self {
TinyDancerError::StorageError(err.to_string())
}
}