diff --git a/sqlx-core/src/pool/inner.rs b/sqlx-core/src/pool/inner.rs index ae96f2b519..5c30cd7499 100644 --- a/sqlx-core/src/pool/inner.rs +++ b/sqlx-core/src/pool/inner.rs @@ -70,6 +70,10 @@ where &self.options } + pub(super) fn url(&self) -> &str { + &self.url + } + pub(super) fn size(&self) -> u32 { self.size.load(Ordering::Acquire) } @@ -78,6 +82,10 @@ where self.pool_rx.len() } + pub(super) fn closed(&self) -> bool { + self.closed.load(Ordering::SeqCst) + } + pub(super) async fn close(&self) { self.closed.store(true, Ordering::Release); diff --git a/sqlx-core/src/pool/mod.rs b/sqlx-core/src/pool/mod.rs index 2632b6adb8..94081f1266 100644 --- a/sqlx-core/src/pool/mod.rs +++ b/sqlx-core/src/pool/mod.rs @@ -1,6 +1,7 @@ //! **Pool** for SQLx database connections. use std::{ + fmt, ops::{Deref, DerefMut}, sync::Arc, time::{Duration, Instant}, @@ -141,6 +142,18 @@ where } } +impl fmt::Debug for Pool { + fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt.debug_struct("Pool") + .field("url", &self.inner.url()) + .field("size", &self.inner.size()) + .field("num_idle", &self.inner.num_idle()) + .field("closed", &self.inner.closed()) + .field("options", self.inner.options()) + .finish() + } +} + const DEREF_ERR: &str = "(bug) connection already released to pool"; impl Deref for Connection { diff --git a/sqlx-core/src/pool/options.rs b/sqlx-core/src/pool/options.rs index f2c426bc89..3cd8bddccd 100644 --- a/sqlx-core/src/pool/options.rs +++ b/sqlx-core/src/pool/options.rs @@ -110,6 +110,7 @@ where } } +#[derive(Debug)] pub(crate) struct Options { pub max_size: u32, pub connect_timeout: Duration,