From f4ec8bd4a02a04d32975372bc993c87c2d553ffd Mon Sep 17 00:00:00 2001 From: Matt Gibson Date: Thu, 2 Oct 2025 15:56:38 -0700 Subject: [PATCH] Improve ms_database errors --- akd/Cargo.lock | 1 + akd/crates/akd_storage/Cargo.toml | 1 + akd/crates/ms_database/src/lib.rs | 16 +++++++++++++++- akd/crates/ms_database/src/pool.rs | 1 - 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/akd/Cargo.lock b/akd/Cargo.lock index 3de8568d56..e2a96a8a83 100644 --- a/akd/Cargo.lock +++ b/akd/Cargo.lock @@ -67,6 +67,7 @@ dependencies = [ "akd", "async-trait", "ms_database", + "thiserror 2.0.17", ] [[package]] diff --git a/akd/crates/akd_storage/Cargo.toml b/akd/crates/akd_storage/Cargo.toml index 92c450776d..92271c32e1 100644 --- a/akd/crates/akd_storage/Cargo.toml +++ b/akd/crates/akd_storage/Cargo.toml @@ -10,6 +10,7 @@ keywords.workspace = true akd = "0.11.0" async-trait = "0.1.89" ms_database = { path = "../ms_database" } +thiserror = "2.0.17" [lints] workspace = true diff --git a/akd/crates/ms_database/src/lib.rs b/akd/crates/ms_database/src/lib.rs index ce93b8e5b1..31c109322a 100644 --- a/akd/crates/ms_database/src/lib.rs +++ b/akd/crates/ms_database/src/lib.rs @@ -3,13 +3,27 @@ pub use migrate::{Migration, MigrationError, run_pending_migrations}; mod pool; pub use pool::ConnectionManager as MsSqlConnectionManager; +pub use pool::{OnConnectError}; // re-expose tiberius types for convenience -pub use tiberius::{error, Column, Row, ToSql}; +pub use tiberius::{error::Error as MsDbError, Column, Row, ToSql}; // re-expose bb8 types for convenience pub type Pool = bb8::Pool; +pub type PoolError = bb8::RunError; pub type PooledConnection<'a> = bb8::PooledConnection<'a, MsSqlConnectionManager>; // re-expose macros for convenience pub use macros::{load_migrations, migration}; + +#[derive(thiserror::Error, Debug)] +pub enum MsDatabaseError { + #[error("Pool error: {0}")] + Pool(#[from] PoolError), + #[error("On Connect error: {0}")] + OnConnectError(#[from] OnConnectError), + #[error("Migration error: {0}")] + Migration(#[from] MigrationError), + #[error("Database error: {0}")] + Db(#[from] MsDbError), +} diff --git a/akd/crates/ms_database/src/pool.rs b/akd/crates/ms_database/src/pool.rs index 6e88b6735b..c8f899ce4b 100644 --- a/akd/crates/ms_database/src/pool.rs +++ b/akd/crates/ms_database/src/pool.rs @@ -6,7 +6,6 @@ use tokio_util::compat::TokioAsyncWriteCompatExt; use bb8::ManageConnection; use tiberius::{Client, Config}; - #[derive(thiserror::Error, Debug)] pub enum OnConnectError { #[error("Config error: {0}")]