use thiserror::Error;
#[derive(Debug, Error)]
pub enum DataStackError {
#[error("Database open error: {0}")]
Database(#[from] redb::DatabaseError),
#[error("General database error: {0}")]
Redb(#[from] redb::Error),
#[error("Transaction error: {0}")]
Transaction(#[from] redb::TransactionError),
#[error("Table error: {0}")]
Table(#[from] redb::TableError),
#[error("Storage error: {0}")]
Storage(#[from] redb::StorageError),
#[error("Commit error: {0}")]
Commit(#[from] redb::CommitError),
#[error("Bincode error: {0}")]
Bincode(#[from] Box<bincode::ErrorKind>),
#[error("Serde JSON error: {0}")]
SerdeJson(#[from] serde_json::Error),
#[error("Invalid update: {0}")]
InvalidUpdate(String),
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
}