aboutsummaryrefslogtreecommitdiffstats
path: root/src/database/mod.rs
diff options
context:
space:
mode:
authorsalmonik <raisersoft@proton.me>2026-07-09 16:20:43 +0200
committersalmonik <raisersoft@proton.me>2026-07-09 16:20:43 +0200
commit0768a2efa68b72107f2f2e7fa0f0dc87fd12d3c4 (patch)
tree160b0f61233fef8ef5e5e62c108b8652593aed7c /src/database/mod.rs
parentsearch for mp4's too (diff)
downloadsenator-sperma-0768a2efa68b72107f2f2e7fa0f0dc87fd12d3c4.tar.gz
senator-sperma-0768a2efa68b72107f2f2e7fa0f0dc87fd12d3c4.zip
fix cron double fire
Signed-off-by: salmonik <raisersoft@proton.me>
Diffstat (limited to '')
-rw-r--r--src/database/mod.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/database/mod.rs b/src/database/mod.rs
index 53f4bf4..e803da9 100644
--- a/src/database/mod.rs
+++ b/src/database/mod.rs
@@ -50,12 +50,19 @@ async fn run_migrations(pool: &DbPool) -> Result<()> {
50 active INTEGER NOT NULL DEFAULT 1, 50 active INTEGER NOT NULL DEFAULT 1,
51 audio_filename TEXT, 51 audio_filename TEXT,
52 message TEXT, 52 message TEXT,
53 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 53 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
54 last_run TIMESTAMP
54 )", 55 )",
55 ) 56 )
56 .execute(pool) 57 .execute(pool)
57 .await?; 58 .await?;
58 59
60 // Add last_run column for pre-existing databases that lack it.
61 sqlx::query("ALTER TABLE cron_jobs ADD COLUMN last_run TIMESTAMP")
62 .execute(pool)
63 .await
64 .ok();
65
59 sqlx::query( 66 sqlx::query(
60 "CREATE TABLE IF NOT EXISTS triggers ( 67 "CREATE TABLE IF NOT EXISTS triggers (
61 id INTEGER PRIMARY KEY AUTOINCREMENT, 68 id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -157,6 +164,7 @@ pub struct CronJob {
157 pub message: Option<String>, 164 pub message: Option<String>,
158 #[allow(dead_code)] 165 #[allow(dead_code)]
159 pub created_at: Option<DateTime<Utc>>, 166 pub created_at: Option<DateTime<Utc>>,
167 pub last_run: Option<DateTime<Utc>>,
160} 168}
161 169
162#[allow(dead_code)] 170#[allow(dead_code)]
@@ -202,6 +210,15 @@ pub async fn delete_cron_job(pool: &DbPool, id: i64) -> Result<bool> {
202 Ok(result.rows_affected() > 0) 210 Ok(result.rows_affected() > 0)
203} 211}
204 212
213pub async fn update_cron_last_run(pool: &DbPool, id: i64, last_run: DateTime<Utc>) -> Result<()> {
214 sqlx::query("UPDATE cron_jobs SET last_run = ? WHERE id = ?")
215 .bind(last_run)
216 .bind(id)
217 .execute(pool)
218 .await?;
219 Ok(())
220}
221
205pub async fn set_cron_job_active(pool: &DbPool, id: i64, active: bool) -> Result<bool> { 222pub async fn set_cron_job_active(pool: &DbPool, id: i64, active: bool) -> Result<bool> {
206 let result = sqlx::query("UPDATE cron_jobs SET active = ? WHERE id = ?") 223 let result = sqlx::query("UPDATE cron_jobs SET active = ? WHERE id = ?")
207 .bind(if active { 1 } else { 0 }) 224 .bind(if active { 1 } else { 0 })