feat: add debug query logging

main
Jef Roosens 2025-03-06 23:13:06 +01:00
parent 648921837b
commit 66349afdfc
Signed by: Jef Roosens
GPG Key ID: 02D4C0997E74717B
1 changed files with 23 additions and 2 deletions

View File

@ -2,10 +2,13 @@ pub mod models;
mod repository;
mod schema;
use diesel::connection::InstrumentationEvent;
use diesel::r2d2::CustomizeConnection;
use diesel::Connection;
pub use models::device::{Device, DeviceType, NewDevice};
pub use models::device_subscription::{DeviceSubscription, NewDeviceSubscription};
pub use models::episode_action::{ActionType, EpisodeAction, NewEpisodeAction};
pub use models::session::Session;
pub use models::device_subscription::{NewDeviceSubscription, DeviceSubscription};
pub use models::user::{NewUser, User};
pub use repository::SqliteRepository;
@ -59,9 +62,27 @@ impl From<diesel::result::Error> for DbError {
}
}
#[derive(Debug)]
pub struct AddQueryDebugLogs;
impl CustomizeConnection<SqliteConnection, diesel::r2d2::Error> for AddQueryDebugLogs {
fn on_acquire(&self, conn: &mut SqliteConnection) -> Result<(), diesel::r2d2::Error> {
conn.set_instrumentation(|event: InstrumentationEvent<'_>| match event {
InstrumentationEvent::StartQuery { query, .. } => {
tracing::debug!("{}", query);
}
_ => {}
});
Ok(())
}
}
pub fn initialize_db(path: impl AsRef<Path>, run_migrations: bool) -> Result<DbPool, DbError> {
let manager = ConnectionManager::<SqliteConnection>::new(path.as_ref().to_string_lossy());
let pool = Pool::new(manager)?;
let pool = Pool::builder()
.connection_customizer(Box::new(AddQueryDebugLogs))
.build(manager)?;
if run_migrations {
pool.get()?.run_pending_migrations(MIGRATIONS).unwrap();