From a319e72655a7886a17c709543798286767f3249a Mon Sep 17 00:00:00 2001 From: Paul <paulmakles@gmail.com> Date: Mon, 3 May 2021 16:35:59 +0100 Subject: [PATCH] Add a way to choose message fetch sort. --- set_version.sh | 2 +- src/routes/channels/edit_channel.rs | 4 ---- src/routes/channels/message_query.rs | 10 +++++++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/set_version.sh b/set_version.sh index 43821b0..d510495 100755 --- a/set_version.sh +++ b/set_version.sh @@ -1,3 +1,3 @@ #!/bin/bash -export version=0.4.1-alpha.6 +export version=0.4.1-alpha.7 echo "pub const VERSION: &str = \"${version}\";" > src/version.rs diff --git a/src/routes/channels/edit_channel.rs b/src/routes/channels/edit_channel.rs index ff5c473..4c680e1 100644 --- a/src/routes/channels/edit_channel.rs +++ b/src/routes/channels/edit_channel.rs @@ -26,10 +26,6 @@ pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<()> { data.validate() .map_err(|error| Error::FailedValidation { error })?; - if data.name.is_none() && data.description.is_none() && data.icon.is_none() && data.remove.is_none() { - return Ok(()); - } - let target = target.fetch_channel().await?; let perm = permissions::PermissionCalculator::new(&user) .with_channel(&target) diff --git a/src/routes/channels/message_query.rs b/src/routes/channels/message_query.rs index dadf8b5..bed171c 100644 --- a/src/routes/channels/message_query.rs +++ b/src/routes/channels/message_query.rs @@ -11,6 +11,12 @@ use rocket_contrib::json::JsonValue; use serde::{Deserialize, Serialize}; use validator::Validate; +#[derive(Serialize, Deserialize, FromFormValue)] +pub enum Sort { + Latest, + Oldest +} + #[derive(Validate, Serialize, Deserialize, FromForm)] pub struct Options { #[validate(range(min = 1, max = 100))] @@ -19,6 +25,7 @@ pub struct Options { before: Option<String>, #[validate(length(min = 26, max = 26))] after: Option<String>, + sort: Option<Sort> } #[get("/<target>/messages?<options..>")] @@ -47,13 +54,14 @@ pub async fn req(user: User, target: Ref, options: Form<Options>) -> Result<Json query.insert("_id", doc! { "$gt": after }); } + let sort = if let Sort::Latest = options.sort.as_ref().unwrap_or_else(|| &Sort::Latest) { -1 } else { 1 }; let mut cursor = get_collection("messages") .find( query, FindOptions::builder() .limit(options.limit.unwrap_or(50)) .sort(doc! { - "_id": -1 + "_id": sort }) .build(), ) -- GitLab