use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
    #[cfg(feature = "pgstac")]
    #[error(transparent)]
    Bb8TokioPostgresRun(#[from] bb8::RunError<tokio_postgres::Error>),
    #[error("backend error: {0}")]
    Backend(String),
    #[error("memory backend error: {0}")]
    MemoryBackend(String),
    #[cfg(feature = "pgstac")]
    #[error(transparent)]
    Pgstac(#[from] pgstac::Error),
    #[error(transparent)]
    SerdeJson(#[from] serde_json::Error),
    #[error(transparent)]
    SerdeUrlencodedSer(#[from] serde_urlencoded::ser::Error),
    #[error(transparent)]
    Stac(#[from] stac::Error),
    #[error(transparent)]
    StacApi(#[from] stac_api::Error),
    #[error(transparent)]
    StacTypes(#[from] stac_types::Error),
    #[cfg(feature = "pgstac")]
    #[error(transparent)]
    TokioPostgres(#[from] tokio_postgres::Error),
    #[error(transparent)]
    TryFromInt(#[from] std::num::TryFromIntError),
    #[error(transparent)]
    UrlParse(#[from] url::ParseError),
}