From 234937fea6452a037d8cf2d2e20af5ff535ebe26 Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 4 Nov 2026 01:12:42 +0100 Subject: cron/triggers: keep pre-scoping rows manageable --- src/database/mod.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/database') diff --git a/src/database/mod.rs b/src/database/mod.rs index e81e448..d15bb00 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -336,7 +336,9 @@ pub struct CronJob { #[allow(dead_code)] pub async fn list_cron_jobs(pool: &DbPool, guild_id: i64) -> Result> { Ok( - sqlx::query_as("SELECT * FROM cron_jobs WHERE guild_id = ? ORDER BY id") + // `guild_id = 0` covers rows created before guild scoping existed; + // they stay manageable until recreated in a guild. + sqlx::query_as("SELECT * FROM cron_jobs WHERE guild_id = ? OR guild_id = 0 ORDER BY id") .bind(guild_id) .fetch_all(pool) .await?, @@ -389,7 +391,7 @@ pub async fn add_cron_job( } pub async fn delete_cron_job(pool: &DbPool, id: i64, guild_id: i64) -> Result { - let result = sqlx::query("DELETE FROM cron_jobs WHERE id = ? AND guild_id = ?") + let result = sqlx::query("DELETE FROM cron_jobs WHERE id = ? AND (guild_id = ? OR guild_id = 0)") .bind(id) .bind(guild_id) .execute(pool) @@ -413,7 +415,7 @@ pub async fn set_cron_job_active( active: bool, ) -> Result { let result = - sqlx::query("UPDATE cron_jobs SET active = ? WHERE id = ? AND guild_id = ?") + sqlx::query("UPDATE cron_jobs SET active = ? WHERE id = ? AND (guild_id = ? OR guild_id = 0)") .bind(if active { 1 } else { 0 }) .bind(id) .bind(guild_id) @@ -458,7 +460,7 @@ pub async fn create_trigger(pool: &DbPool, guild_id: i64, name: &str) -> Result< } pub async fn delete_trigger(pool: &DbPool, id: i64, guild_id: i64) -> Result { - let result = sqlx::query("DELETE FROM triggers WHERE id = ? AND guild_id = ?") + let result = sqlx::query("DELETE FROM triggers WHERE id = ? AND (guild_id = ? OR guild_id = 0)") .bind(id) .bind(guild_id) .execute(pool) @@ -472,7 +474,9 @@ pub async fn get_trigger_by_name( name: &str, ) -> Result> { Ok( - sqlx::query_as("SELECT * FROM triggers WHERE guild_id = ? AND name = ?") + sqlx::query_as( + "SELECT * FROM triggers WHERE (guild_id = ? OR guild_id = 0) AND name = ?", + ) .bind(guild_id) .bind(name) .fetch_optional(pool) @@ -482,7 +486,9 @@ pub async fn get_trigger_by_name( pub async fn list_triggers(pool: &DbPool, guild_id: i64) -> Result> { Ok( - sqlx::query_as("SELECT * FROM triggers WHERE guild_id = ? ORDER BY name") + sqlx::query_as( + "SELECT * FROM triggers WHERE guild_id = ? OR guild_id = 0 ORDER BY name", + ) .bind(guild_id) .fetch_all(pool) .await?, -- cgit v1.2.3