use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error(transparent)]
Sqlite(#[from] rusqlite::Error),
#[error(transparent)]
Pool(#[from] crate::pool::Error<rusqlite::Error>),
#[error("Not enough elements: expected {0}, got {1}")]
MissingColumn(usize, usize),
#[error("Invalid type from db, expected {0} got {1}")]
InvalidType(String, String),
#[error("Error converting {0} to {1}")]
InvalidConversion(String, String),
#[error(transparent)]
Serde(#[from] serde_json::Error),
#[error(transparent)]
CDK(#[from] cdk_common::Error),
#[error(transparent)]
CDKNUT00(#[from] cdk_common::nuts::nut00::Error),
#[error(transparent)]
CDKNUT01(#[from] cdk_common::nuts::nut01::Error),
#[error(transparent)]
CDKNUT02(#[from] cdk_common::nuts::nut02::Error),
#[error(transparent)]
CDKNUT04(#[from] cdk_common::nuts::nut04::Error),
#[error(transparent)]
CDKNUT05(#[from] cdk_common::nuts::nut05::Error),
#[error(transparent)]
CDKNUT07(#[from] cdk_common::nuts::nut07::Error),
#[error(transparent)]
CDKNUT23(#[from] cdk_common::nuts::nut23::Error),
#[error(transparent)]
CDKSECRET(#[from] cdk_common::secret::Error),
#[error(transparent)]
MintUrl(#[from] cdk_common::mint_url::Error),
#[error(transparent)]
BIP32(#[from] bitcoin::bip32::Error),
#[error("Could not initialize database")]
CouldNotInitialize,
#[error("Invalid database path")]
InvalidDbPath,
}
impl From<Error> for cdk_common::database::Error {
fn from(e: Error) -> Self {
Self::Database(Box::new(e))
}
}