Add Debug impl for PgRow (#2917)

This commit is contained in:
Grzegorz Bartoszek 2024-04-23 00:39:39 +02:00 committed by GitHub
parent 439ac858d1
commit a5d7fffc1b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -4,9 +4,11 @@ use crate::message::DataRow;
use crate::statement::PgStatementMetadata;
use crate::value::PgValueFormat;
use crate::{PgColumn, PgValueRef, Postgres};
use std::sync::Arc;
pub(crate) use sqlx_core::row::Row;
use sqlx_core::type_checking::TypeChecking;
use sqlx_core::value::ValueRef;
use std::fmt::Debug;
use std::sync::Arc;
/// Implementation of [`Row`] for PostgreSQL.
pub struct PgRow {
@ -48,3 +50,26 @@ impl ColumnIndex<PgRow> for &'_ str {
.map(|v| *v)
}
}
impl Debug for PgRow {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "PgRow ")?;
let mut debug_map = f.debug_map();
for (index, column) in self.columns().iter().enumerate() {
match self.try_get_raw(index) {
Ok(value) => {
debug_map.entry(
&column.name,
&Postgres::fmt_value_debug(&<PgValueRef as ValueRef>::to_owned(&value)),
);
}
Err(error) => {
debug_map.entry(&column.name, &format!("decode error: {error:?}"));
}
}
}
debug_map.finish()
}
}