use thiserror::Error;
#[derive(Error, Debug)]
pub enum VTableError {
#[error("Storage backend error: {0}")]
OpenDal(Box<opendal::Error>),
#[error("SQLite error: {0}")]
Sqlite(#[from] rusqlite::Error),
#[error("Invalid configuration: {0}")]
InvalidConfig(String),
#[error("Missing required parameter: {0}")]
MissingParameter(String),
#[error("Invalid path: {0}")]
InvalidPath(String),
#[error("Async operation failed: {0}")]
AsyncError(String),
#[error("{0}")]
Custom(String),
}
pub type Result<T> = std::result::Result<T, VTableError>;
impl From<opendal::Error> for VTableError {
fn from(err: opendal::Error) -> Self {
VTableError::OpenDal(Box::new(err))
}
}
impl From<VTableError> for rusqlite::Error {
fn from(err: VTableError) -> Self {
rusqlite::Error::ModuleError(err.to_string())
}
}