use wacore::store::error::StoreError;
pub(crate) fn interact_to_store_err(e: deadpool_sqlite::InteractError) -> StoreError {
StoreError::Database(format!("interact error: {e}").into())
}
pub(crate) fn pool_err(e: deadpool_sqlite::PoolError) -> StoreError {
StoreError::Connection(format!("pool error: {e}").into())
}
pub(crate) fn db_err(e: rusqlite::Error) -> StoreError {
StoreError::Database(Box::new(e))
}
pub(crate) trait OptionalExt<T> {
fn optional(self) -> std::result::Result<Option<T>, rusqlite::Error>;
}
impl<T> OptionalExt<T> for std::result::Result<T, rusqlite::Error> {
fn optional(self) -> std::result::Result<Option<T>, rusqlite::Error> {
match self {
Ok(v) => Ok(Some(v)),
Err(rusqlite::Error::QueryReturnedNoRows) => Ok(None),
Err(e) => Err(e),
}
}
}