commit 5dff7b9dbddb1c169d94afab1b6be7750d4a8d51 from: Thomas Böhler date: Sun Feb 25 08:56:29 2024 UTC feat: Only log SQL statements with level trace Closes: https://todo.sr.ht/~witcher/rss-email/28 Signed-off-by: Thomas Böhler commit - 7c30f9b4f8d2c8b8d8957aa7fcae4d176b343999 commit + 5dff7b9dbddb1c169d94afab1b6be7750d4a8d51 blob - e51b0580ebdb438787ae9c3c43c394c317fae02a blob + 90ed941fb643996268fc37fdb2a957f20aa4bc92 --- src/db.rs +++ src/db.rs @@ -1,10 +1,32 @@ +use std::str::FromStr; + use snafu::prelude::*; use sqlx::pool::PoolConnection; -use sqlx::Sqlite; +use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions}; +use sqlx::{ConnectOptions, Sqlite}; use crate::models::Post; -use crate::{Error, GeneralDatabaseSnafu}; +use crate::{Error, GeneralDatabaseSnafu, MigrationSnafu}; +pub async fn init_db(db_path: &str) -> Result, Error> { + let mut options = SqliteConnectOptions::from_str(db_path).context(GeneralDatabaseSnafu)?; + options.log_statements(log::LevelFilter::Trace); + + log::debug!("Establishing connection to database at {:?}", db_path); + let pool = SqlitePoolOptions::new() + .max_connections(5) + .connect_with(options) + .await + .context(GeneralDatabaseSnafu)?; + + sqlx::migrate!("./migrations") + .run(&pool) + .await + .context(MigrationSnafu)?; + + Ok(pool) +} + /// Insert a new post or update an old one with the same GUID. /// /// # Errors blob - 98a61c615d01506bbdbe3ae8811ea46fd6d7f12f blob + 4d2cb027064564aeef0b4eb645e702809adb82c2 --- src/main.rs +++ src/main.rs @@ -25,6 +25,7 @@ pub mod models; use crate::{ config::AppConfig, + db::{init_db, insert_item}, mail::{get_mailer, Mail}, }; use lettre::{AsyncSmtpTransport, Tokio1Executor}; @@ -35,7 +36,7 @@ use std::{ sync::Arc, }; -use sqlx::{sqlite::SqlitePoolOptions, Sqlite}; +use sqlx::Sqlite; use tokio::task::JoinSet; #[derive(Debug, Snafu)] @@ -76,19 +77,8 @@ async fn app_main() -> Result<(), Error> { .filter(|l| !l.starts_with('#')) .collect(); - let db_path = &config.database_path; - debug!("Establishing connection to database at {:?}", db_path); - let pool = SqlitePoolOptions::new() - .max_connections(5) - .connect(db_path.as_str()) - .await - .context(GeneralDatabaseSnafu)?; + let pool = init_db(&config.database_path).await?; - sqlx::migrate!("./migrations") - .run(&pool) - .await - .context(MigrationSnafu)?; - if config.no_fetch { info!("Not fetching any feeds as \"--no-fetch\" has been passed"); } else { @@ -157,7 +147,7 @@ async fn fetch_feeds(urls: Vec, pool: &sqlx::P for i in posts { let conn = pool.acquire().await.context(GeneralDatabaseSnafu)?; - db::insert_item(conn, &i).await?; + insert_item(conn, &i).await?; } }