From 850fad62f12b4e764f5e64036db35259237994cb Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 19 Aug 2026 02:45:49 +0200 Subject: fix: Various cron fixes Not saving full URL Not using autocompletion content, just label --- src/database/mod.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/database') diff --git a/src/database/mod.rs b/src/database/mod.rs index e803da9..0674477 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -43,7 +43,7 @@ async fn run_migrations(pool: &DbPool) -> Result<()> { sqlx::query( "CREATE TABLE IF NOT EXISTS cron_jobs ( - id INTEGER PRIMARY KEY AUTOINCREMENT, + id INTEGER PRIMARY KEY, cron_expression TEXT NOT NULL, type TEXT NOT NULL CHECK(type IN ('audio', 'wiadomość')), channel_id INTEGER NOT NULL, @@ -189,9 +189,24 @@ pub async fn add_cron_job( audio_filename: Option<&str>, message: Option<&str>, ) -> Result { + // Find the lowest unused ID to reuse freed slots + let existing: Vec = sqlx::query_scalar("SELECT id FROM cron_jobs ORDER BY id") + .fetch_all(pool) + .await?; + + let next_id = existing.iter().enumerate().find_map(|(i, &id)| { + let expected = (i as i64) + 1; + if id != expected { + Some(expected) + } else { + None + } + }).unwrap_or(existing.len() as i64 + 1); + let result = sqlx::query( - "INSERT INTO cron_jobs (cron_expression, type, channel_id, audio_filename, message) VALUES (?, ?, ?, ?, ?)", + "INSERT INTO cron_jobs (id, cron_expression, type, channel_id, audio_filename, message) VALUES (?, ?, ?, ?, ?, ?)", ) + .bind(next_id) .bind(cron_expression) .bind(r#type) .bind(channel_id) -- cgit v1.2.3