use iceberg::{Error, ErrorKind};
#[derive(Debug, thiserror::Error)]
pub enum RedbCatalogError {
#[error("redb storage error: {0}")]
Storage(#[from] redb::StorageError),
#[error("redb transaction error: {0}")]
Transaction(#[from] redb::TransactionError),
#[error("redb table error: {0}")]
Table(#[from] redb::TableError),
#[error("redb commit error: {0}")]
Commit(#[from] redb::CommitError),
#[error("redb database error: {0}")]
Database(#[from] redb::DatabaseError),
#[error("json (de)serialization error: {0}")]
Json(#[from] serde_json::Error),
}
impl From<RedbCatalogError> for Error {
fn from(err: RedbCatalogError) -> Self {
Error::new(ErrorKind::Unexpected, err.to_string())
}
}
pub(crate) fn map_redb<E: Into<RedbCatalogError>>(e: E) -> Error {
let err: RedbCatalogError = e.into();
Error::from(err)
}