diff options
Diffstat (limited to '')
| -rw-r--r-- | src/database/mod.rs | 19 |
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 | ||
| 213 | pub 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 | |||
| 205 | pub async fn set_cron_job_active(pool: &DbPool, id: i64, active: bool) -> Result<bool> { | 222 | pub 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 }) |
