Restrict reminder selection to one-per-guild during fetch loop

This commit is contained in:
jude
2022-07-28 19:19:46 +01:00
parent 03f08f0a18
commit 2781f2923e
8 changed files with 23 additions and 14 deletions

View File

@ -38,7 +38,7 @@ async fn _initialize(ctx: Context, pool: impl Executor<'_, Database = Database>
let reminders = sender::Reminder::fetch_reminders(pool).await;
if reminders.len() > 0 {
info!("Preparing to send {} reminders.", reminders.len());
println!("Preparing to send {} reminders.", reminders.len());
for reminder in reminders {
reminder.send(pool, ctx.clone()).await;

View File

@ -292,6 +292,16 @@ INNER JOIN
ON
reminders.channel_id = channels.id
WHERE
reminders.id IN (
SELECT
MIN(reminders.id)
FROM reminders
INNER JOIN
channels
ON reminders.channel_id = channels.id
WHERE reminders.`utc_time` < NOW()
GROUP BY channels.guild_id
) AND
reminders.`utc_time` < NOW()"#,
)
.fetch_all(pool)