diff options
Diffstat (limited to 'src/db/jobs.rs')
-rw-r--r-- | src/db/jobs.rs | 42 |
1 files changed, 19 insertions, 23 deletions
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(_) => (), |