essential_builder_db/
error.rsuse thiserror::Error;
#[cfg(feature = "pool")]
#[derive(Debug, Error)]
pub enum AcquireThenError<E> {
#[error("failed to acquire a DB connection: {0}")]
Acquire(#[from] tokio::sync::AcquireError),
#[error("failed to join task: {0}")]
Join(#[from] tokio::task::JoinError),
#[error("{0}")]
Inner(E),
}
#[cfg(feature = "pool")]
pub type AcquireThenRusqliteError = AcquireThenError<rusqlite::Error>;
#[cfg(feature = "pool")]
pub type AcquireThenQueryError = AcquireThenError<crate::error::QueryError>;
#[derive(Debug, Error)]
#[error("decoding failed due to postcard deserialization error: {0}")]
pub struct DecodeError(#[from] pub postcard::Error);
#[derive(Debug, Error)]
pub enum QueryError {
#[error("a DB error occurred: {0}")]
Rusqlite(#[from] rusqlite::Error),
#[error("failed to decode: {0}")]
Decode(#[from] DecodeError),
}
#[derive(Debug, Error)]
pub struct ConnectionCloseErrors(pub Vec<(rusqlite::Connection, rusqlite::Error)>);
impl core::fmt::Display for ConnectionCloseErrors {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
writeln!(f, "failed to close one or more connections:")?;
for (ix, (_conn, err)) in self.0.iter().enumerate() {
writeln!(f, " {ix}: {err}")?;
}
Ok(())
}
}