From 0adf5a093494bdb7f5d5c0f12913133e333ddfad Mon Sep 17 00:00:00 2001 From: Joris Date: Fri, 31 Jan 2025 22:28:53 +0100 Subject: Migrate to tokio_rusqlite --- src/db/jobs.rs | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) (limited to 'src/db/jobs.rs') diff --git a/src/db/jobs.rs b/src/db/jobs.rs index 7d9386a..1d00408 100644 --- a/src/db/jobs.rs +++ b/src/db/jobs.rs @@ -1,32 +1,27 @@ -use sqlx::error::Error; -use sqlx::sqlite::SqlitePool; +use tokio_rusqlite::{named_params, Connection}; use crate::model::job::Job; -pub async fn should_run(pool: &SqlitePool, job: Job) -> bool { +pub async fn should_run(conn: &Connection, job: Job) -> bool { let run_from = match job { Job::WeeklyReport => "date('now', 'weekday 0', '-6 days')", Job::MonthlyPayment => "date('now', 'start of month')", }; let query = format!( - r#" -SELECT - 1 -FROM - jobs -WHERE - name = ? - AND last_execution < {} - "#, + r#"SELECT 1 FROM jobs WHERE name = ? AND last_execution < {}"#, run_from ); - let res = sqlx::query(&query).bind(job).fetch_one(pool).await; + let res = conn + .call(move |conn| { + let mut stmt = conn.prepare(&query)?; + Ok(stmt.exists([job.to_string()])?) + }) + .await; match res { - Ok(_) => true, - Err(Error::RowNotFound) => false, + Ok(r) => r, Err(err) => { log::error!("Error looking if job should run: {:?}", err); false @@ -34,17 +29,18 @@ WHERE } } -pub async fn actualize_last_execution(pool: &SqlitePool, job: Job) { +pub async fn actualize_last_execution(conn: &Connection, job: Job) { let query = r#" -UPDATE - jobs -SET - last_execution = datetime() -WHERE - name = ? + UPDATE jobs + SET last_execution = datetime() + WHERE name = :name "#; - let res = sqlx::query(query).bind(job).execute(pool).await; + let res = conn + .call(move |conn| { + Ok(conn.execute(query, named_params![":name": job.to_string()])?) + }) + .await; match res { Ok(_) => (), -- cgit v1.2.3