use deadpool_sqlite::{CreatePoolError, InteractError, PoolError};
use nostr_database::{flatbuffers, DatabaseError};
use thiserror::Error;
use crate::migration::MigrationError;
#[derive(Debug, Error)]
pub enum Error {
#[error(transparent)]
Sqlite(#[from] rusqlite::Error),
#[error(transparent)]
CreateDeadPool(#[from] CreatePoolError),
#[error(transparent)]
DeadPool(#[from] PoolError),
#[error("{0}")]
DeadPoolInteract(String),
#[error(transparent)]
Migration(#[from] MigrationError),
#[error(transparent)]
Database(#[from] DatabaseError),
#[error(transparent)]
Flatbuffers(#[from] flatbuffers::Error),
#[error(transparent)]
Url(#[from] nostr::url::ParseError),
#[error("sqlite: {0} not found")]
NotFound(String),
}
impl From<InteractError> for Error {
fn from(e: InteractError) -> Self {
Self::DeadPoolInteract(e.to_string())
}
}
impl From<Error> for DatabaseError {
fn from(e: Error) -> Self {
Self::backend(e)
}
}