From 0618d391ad891a665d80ca4882a540644cc221c6 Mon Sep 17 00:00:00 2001 From: Celeo Date: Fri, 13 Dec 2024 16:19:02 -0800 Subject: [PATCH] Fix events disppearing from pages too fast --- vzdv-bot/src/commands.rs | 14 ++++++++++---- vzdv-site/src/endpoints/events.rs | 21 ++++++++++++--------- vzdv-site/templates/changelog.jinja | 1 + vzdv/src/sql.rs | 8 ++++---- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/vzdv-bot/src/commands.rs b/vzdv-bot/src/commands.rs index 3c33d18..9b38150 100644 --- a/vzdv-bot/src/commands.rs +++ b/vzdv-bot/src/commands.rs @@ -117,10 +117,16 @@ pub async fn handler( match &event.0.data.as_ref().unwrap() { InteractionData::ApplicationCommand(_app_command) => { info!("Got event command by {author_id}; building dropdown"); - let events: Vec = sqlx::query_as(sql::GET_ALL_UPCOMING_EVENTS) - .bind(Utc::now()) - .fetch_all(db) - .await?; + let events: Vec<_> = { + let all: Vec = + sqlx::query_as(sql::GET_ALL_EVENTS).fetch_all(db).await?; + let upcoming = all + .iter() + .filter(|event| event.end >= Utc::now()) + .cloned() + .collect(); + upcoming + }; if events.is_empty() { interaction.create_response(event.id, &event.token, &InteractionResponse { kind: twilight_model::http::interaction::InteractionResponseType::ChannelMessageWithSource, diff --git a/vzdv-site/src/endpoints/events.rs b/vzdv-site/src/endpoints/events.rs index 0c2dfc4..45013e5 100644 --- a/vzdv-site/src/endpoints/events.rs +++ b/vzdv-site/src/endpoints/events.rs @@ -31,17 +31,20 @@ use vzdv::{ /// Get a list of upcoming events optionally with unpublished events. pub async fn query_for_events(db: &Pool, show_all: bool) -> sqlx::Result> { - if show_all { - sqlx::query_as(sql::GET_ALL_UPCOMING_EVENTS) - .bind(Utc::now()) - .fetch_all(db) - .await + let now = Utc::now(); + let events: Vec = if show_all { + sqlx::query_as(sql::GET_ALL_EVENTS).fetch_all(db).await? } else { - sqlx::query_as(sql::GET_UPCOMING_EVENTS) - .bind(Utc::now()) + sqlx::query_as(sql::GET_PUBLISHED_EVENTS) .fetch_all(db) - .await - } + .await? + }; + let events = events + .iter() + .filter(|event| event.end >= now) + .cloned() + .collect(); + Ok(events) } /// Render a snippet that lists published upcoming events. diff --git a/vzdv-site/templates/changelog.jinja b/vzdv-site/templates/changelog.jinja index a6ff8bc..677e716 100644 --- a/vzdv-site/templates/changelog.jinja +++ b/vzdv-site/templates/changelog.jinja @@ -21,6 +21,7 @@
  • ACE controllers online in ZDV airspace won't trigger Discord notifications to Sr Staff of off-roster controlling
  • Integrated my vatsim_pilot_glance_online tool into the site
  • +
  • Fix events disappearing from home and events page too quickly
diff --git a/vzdv/src/sql.rs b/vzdv/src/sql.rs index 21e0079..a97b061 100644 --- a/vzdv/src/sql.rs +++ b/vzdv/src/sql.rs @@ -97,7 +97,7 @@ pub struct VisitorRequest { pub date: DateTime, } -#[derive(Debug, FromRow, Serialize)] +#[derive(Debug, Clone, FromRow, Serialize)] pub struct Event { pub id: u32, pub published: bool, @@ -446,9 +446,9 @@ pub const INSERT_INTO_VISITOR_REQ: &str = "INSERT INTO visitor_request VALUES (NULL, $1, $2, $3, $4, $5, $6);"; pub const DELETE_VISITOR_REQUEST: &str = "DELETE FROM visitor_request WHERE id=$1"; -pub const GET_UPCOMING_EVENTS: &str = - "SELECT * FROM event WHERE end > $1 AND published = TRUE ORDER BY start ASC"; -pub const GET_ALL_UPCOMING_EVENTS: &str = "SELECT * FROM event WHERE end > $1 ORDER BY start ASC"; +pub const GET_PUBLISHED_EVENTS: &str = + "SELECT * FROM event WHERE published = TRUE ORDER BY start ASC"; +pub const GET_ALL_EVENTS: &str = "SELECT * FROM event ORDER BY start ASC"; pub const GET_EVENT: &str = "SELECT * FROM event WHERE id=$1"; pub const DELETE_EVENT: &str = "DELETE FROM event WHERE id=$1"; pub const CREATE_EVENT: &str = "INSERT INTO event VALUES (NULL, $1, FALSE, $2, $3, $4, $5, $6);";