aboutsummaryrefslogtreecommitdiffstats
path: root/src/database
diff options
context:
space:
mode:
Diffstat (limited to 'src/database')
-rw-r--r--src/database/mod.rs18
1 files changed, 12 insertions, 6 deletions
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 {
336#[allow(dead_code)] 336#[allow(dead_code)]
337pub async fn list_cron_jobs(pool: &DbPool, guild_id: i64) -> Result<Vec<CronJob>> { 337pub async fn list_cron_jobs(pool: &DbPool, guild_id: i64) -> Result<Vec<CronJob>> {
338 Ok( 338 Ok(
339 sqlx::query_as("SELECT * FROM cron_jobs WHERE guild_id = ? ORDER BY id") 339 // `guild_id = 0` covers rows created before guild scoping existed;
340 // they stay manageable until recreated in a guild.
341 sqlx::query_as("SELECT * FROM cron_jobs WHERE guild_id = ? OR guild_id = 0 ORDER BY id")
340 .bind(guild_id) 342 .bind(guild_id)
341 .fetch_all(pool) 343 .fetch_all(pool)
342 .await?, 344 .await?,
@@ -389,7 +391,7 @@ pub async fn add_cron_job(
389} 391}
390 392
391pub async fn delete_cron_job(pool: &DbPool, id: i64, guild_id: i64) -> Result<bool> { 393pub async fn delete_cron_job(pool: &DbPool, id: i64, guild_id: i64) -> Result<bool> {
392 let result = sqlx::query("DELETE FROM cron_jobs WHERE id = ? AND guild_id = ?") 394 let result = sqlx::query("DELETE FROM cron_jobs WHERE id = ? AND (guild_id = ? OR guild_id = 0)")
393 .bind(id) 395 .bind(id)
394 .bind(guild_id) 396 .bind(guild_id)
395 .execute(pool) 397 .execute(pool)
@@ -413,7 +415,7 @@ pub async fn set_cron_job_active(
413 active: bool, 415 active: bool,
414) -> Result<bool> { 416) -> Result<bool> {
415 let result = 417 let result =
416 sqlx::query("UPDATE cron_jobs SET active = ? WHERE id = ? AND guild_id = ?") 418 sqlx::query("UPDATE cron_jobs SET active = ? WHERE id = ? AND (guild_id = ? OR guild_id = 0)")
417 .bind(if active { 1 } else { 0 }) 419 .bind(if active { 1 } else { 0 })
418 .bind(id) 420 .bind(id)
419 .bind(guild_id) 421 .bind(guild_id)
@@ -458,7 +460,7 @@ pub async fn create_trigger(pool: &DbPool, guild_id: i64, name: &str) -> Result<
458} 460}
459 461
460pub async fn delete_trigger(pool: &DbPool, id: i64, guild_id: i64) -> Result<bool> { 462pub async fn delete_trigger(pool: &DbPool, id: i64, guild_id: i64) -> Result<bool> {
461 let result = sqlx::query("DELETE FROM triggers WHERE id = ? AND guild_id = ?") 463 let result = sqlx::query("DELETE FROM triggers WHERE id = ? AND (guild_id = ? OR guild_id = 0)")
462 .bind(id) 464 .bind(id)
463 .bind(guild_id) 465 .bind(guild_id)
464 .execute(pool) 466 .execute(pool)
@@ -472,7 +474,9 @@ pub async fn get_trigger_by_name(
472 name: &str, 474 name: &str,
473) -> Result<Option<Trigger>> { 475) -> Result<Option<Trigger>> {
474 Ok( 476 Ok(
475 sqlx::query_as("SELECT * FROM triggers WHERE guild_id = ? AND name = ?") 477 sqlx::query_as(
478 "SELECT * FROM triggers WHERE (guild_id = ? OR guild_id = 0) AND name = ?",
479 )
476 .bind(guild_id) 480 .bind(guild_id)
477 .bind(name) 481 .bind(name)
478 .fetch_optional(pool) 482 .fetch_optional(pool)
@@ -482,7 +486,9 @@ pub async fn get_trigger_by_name(
482 486
483pub async fn list_triggers(pool: &DbPool, guild_id: i64) -> Result<Vec<Trigger>> { 487pub async fn list_triggers(pool: &DbPool, guild_id: i64) -> Result<Vec<Trigger>> {
484 Ok( 488 Ok(
485 sqlx::query_as("SELECT * FROM triggers WHERE guild_id = ? ORDER BY name") 489 sqlx::query_as(
490 "SELECT * FROM triggers WHERE guild_id = ? OR guild_id = 0 ORDER BY name",
491 )
486 .bind(guild_id) 492 .bind(guild_id)
487 .fetch_all(pool) 493 .fetch_all(pool)
488 .await?, 494 .await?,