From f69c73ed66365246314f1b77077f4e579ca18113 Mon Sep 17 00:00:00 2001 From: Anna Date: Fri, 26 Jul 2024 04:56:42 -0400 Subject: [PATCH] perf: remove duplicate join --- server/src/web/get_location.rs | 7 ++----- server/src/web/get_message.rs | 3 +-- server/src/web/get_mine.rs | 3 +-- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/server/src/web/get_location.rs b/server/src/web/get_location.rs index 7491889..4d80fad 100644 --- a/server/src/web/get_location.rs +++ b/server/src/web/get_location.rs @@ -67,7 +67,7 @@ async fn logic(state: Arc, id: i64, location: u32, query: GetLocationQuer m.message, coalesce(sum(v.vote between 0 and 1), 0) as positive_votes, coalesce(sum(v.vote between -1 and 0), 0) as negative_votes, - coalesce(v2.vote, 0) as user_vote, + coalesce(sum(case when v.user = ? then v.vote else 0 end), 0) as user_vote, m.glyph, m.emote as "emote: Json>", m.created, @@ -75,7 +75,6 @@ async fn logic(state: Arc, id: i64, location: u32, query: GetLocationQuer coalesce(cast((julianday(current_timestamp) - julianday(u.last_seen)) * 1440 as int), 0) as last_seen_minutes from messages m left join votes v on m.id = v.message - left join votes v2 on m.id = v2.message and v2.user = ? inner join users u on m.user = u.id where m.territory = ? and m.world is ? and m.ward is ? and m.plot is ? group by m.id"#, @@ -103,7 +102,7 @@ async fn logic(state: Arc, id: i64, location: u32, query: GetLocationQuer m.message, coalesce(sum(v.vote between 0 and 1), 0) as positive_votes, coalesce(sum(v.vote between -1 and 0), 0) as negative_votes, - coalesce(v2.vote, 0) as user_vote, + coalesce(sum(case when v.user = ? then v.vote else 0 end), 0) as user_vote, m.glyph, m.emote as "emote: Json>", m.created, @@ -111,7 +110,6 @@ async fn logic(state: Arc, id: i64, location: u32, query: GetLocationQuer coalesce(cast((julianday(current_timestamp) - julianday(u.last_seen)) * 1440 as int), 0) as last_seen_minutes from messages m left join votes v on m.id = v.message - left join votes v2 on m.id = v2.message and v2.user = ? inner join users u on m.user = u.id where m.territory = ? group by m.id"#, @@ -182,7 +180,6 @@ fn filter_messages(messages: &mut Vec, id: i64, vote_threshold } }; - let time_since_creation = a.created.signed_duration_since(Utc::now().naive_utc()); let brand_new = time_since_creation < Duration::minutes(30); let new = time_since_creation < Duration::hours(2); diff --git a/server/src/web/get_message.rs b/server/src/web/get_message.rs index 48623b9..e4e60c8 100644 --- a/server/src/web/get_message.rs +++ b/server/src/web/get_message.rs @@ -38,13 +38,12 @@ async fn logic(state: Arc, id: i64, message_id: Uuid) -> Result>", m.created from messages m left join votes v on m.id = v.message - left join votes v2 on m.id = v2.message and v2.user = ? where m.id = ? group by m.id"#, id, diff --git a/server/src/web/get_mine.rs b/server/src/web/get_mine.rs index 73756a9..d760372 100644 --- a/server/src/web/get_mine.rs +++ b/server/src/web/get_mine.rs @@ -42,14 +42,13 @@ async fn logic(state: Arc, id: i64, extra: i64, mut query: HashMap>", 0 as "is_hidden: bool" from messages m left join votes v on m.id = v.message - left join votes v2 on m.id = v2.message and v2.user = ? where m.user = ? group by m.id"#, id,