From 581f6ce3a7a5a7260726a3342e6c61988944b1fb Mon Sep 17 00:00:00 2001 From: Jay3332 <40323796+jay3332@users.noreply.github.com> Date: Sun, 14 Nov 2021 09:40:11 -0500 Subject: [PATCH 1/3] Implement `offset` query parameter --- .../src/messages/message_history.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ferrischat_webserver/src/messages/message_history.rs b/ferrischat_webserver/src/messages/message_history.rs index 57b67f52..bd96f83f 100644 --- a/ferrischat_webserver/src/messages/message_history.rs +++ b/ferrischat_webserver/src/messages/message_history.rs @@ -20,6 +20,7 @@ pub async fn get_message_history( let GetMessageHistoryParams { mut limit, oldest_first, + offset, } = params.0; if limit < Some(0) { @@ -33,12 +34,19 @@ pub async fn get_message_history( limit = None; } + if offset >= Some(9223372036854775807) { + offset = Some(0); + } else if offset < Some(0) { + offset = Some(0); + } + let messages = { if oldest_first == Some(true) { let resp = sqlx::query!( - "SELECT m.*, a.name AS author_name, a.flags AS author_flags, a.discriminator AS author_discriminator FROM messages m CROSS JOIN LATERAL (SELECT * FROM users WHERE id = m.author_id) as a WHERE channel_id = $1 ORDER BY id ASC LIMIT $2", + "SELECT m.*, a.name AS author_name, a.flags AS author_flags, a.discriminator AS author_discriminator FROM messages m CROSS JOIN LATERAL (SELECT * FROM users WHERE id = m.author_id) as a WHERE channel_id = $1 ORDER BY id ASC LIMIT $2 OFFSET $3", bigint_channel_id, - limit + limit, + offset, ) .fetch_all(db) .await; @@ -88,9 +96,10 @@ pub async fn get_message_history( } } else { let resp = sqlx::query!( - "SELECT m.*, a.name AS author_name, a.flags AS author_flags, a.discriminator AS author_discriminator FROM messages m CROSS JOIN LATERAL (SELECT * FROM users WHERE id = m.author_id) as a WHERE channel_id = $1 ORDER BY id DESC LIMIT $2", + "SELECT m.*, a.name AS author_name, a.flags AS author_flags, a.discriminator AS author_discriminator FROM messages m CROSS JOIN LATERAL (SELECT * FROM users WHERE id = m.author_id) as a WHERE channel_id = $1 ORDER BY id DESC LIMIT $2 OFFSET $3", bigint_channel_id, - limit + limit, + offset, ) .fetch_all(db) .await; From 6ad5370eaa7fcece6804b650c36082be846b0352 Mon Sep 17 00:00:00 2001 From: Jay3332 <40323796+jay3332@users.noreply.github.com> Date: Sun, 14 Nov 2021 10:23:59 -0500 Subject: [PATCH 2/3] optimize --- ferrischat_webserver/src/messages/message_history.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ferrischat_webserver/src/messages/message_history.rs b/ferrischat_webserver/src/messages/message_history.rs index bd96f83f..44e9e31f 100644 --- a/ferrischat_webserver/src/messages/message_history.rs +++ b/ferrischat_webserver/src/messages/message_history.rs @@ -34,9 +34,7 @@ pub async fn get_message_history( limit = None; } - if offset >= Some(9223372036854775807) { - offset = Some(0); - } else if offset < Some(0) { + if offset >= Some(9223372036854775807) || offset < Some(0) { offset = Some(0); } From bf145d26a7cc57cc135fe42ddea3a956fd4e047a Mon Sep 17 00:00:00 2001 From: hydrostaticcog Date: Sun, 14 Nov 2021 12:05:34 -0600 Subject: [PATCH 3/3] make offset mutable --- ferrischat_webserver/src/messages/message_history.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ferrischat_webserver/src/messages/message_history.rs b/ferrischat_webserver/src/messages/message_history.rs index 44e9e31f..d5fc92a2 100644 --- a/ferrischat_webserver/src/messages/message_history.rs +++ b/ferrischat_webserver/src/messages/message_history.rs @@ -20,7 +20,7 @@ pub async fn get_message_history( let GetMessageHistoryParams { mut limit, oldest_first, - offset, + mut offset, } = params.0; if limit < Some(0) {