From 562b62a0b638d2ca0731f83476a2e5f74757962a Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Sat, 13 Jan 2024 06:11:59 +0100 Subject: Clean up default order function I removed the stringly typing as we already have enums for this that we can make use of. --- src/listing.rs | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'src/listing.rs') diff --git a/src/listing.rs b/src/listing.rs index 40c5a77..3cd131e 100644 --- a/src/listing.rs +++ b/src/listing.rs @@ -5,6 +5,7 @@ use std::time::SystemTime; use actix_web::{dev::ServiceResponse, web::Query, HttpMessage, HttpRequest, HttpResponse}; use bytesize::ByteSize; +use clap::ValueEnum; use comrak::{markdown_to_html, ComrakOptions}; use percent_encoding::{percent_decode_str, utf8_percent_encode}; use regex::Regex; @@ -39,10 +40,11 @@ pub struct ListingQueryParameters { } /// Available sorting methods -#[derive(Deserialize, Clone, EnumString, Display, Copy)] +#[derive(Deserialize, Default, Clone, EnumString, Display, Copy, ValueEnum)] #[serde(rename_all = "snake_case")] #[strum(serialize_all = "snake_case")] pub enum SortingMethod { + #[default] /// Sort by name Name, @@ -54,17 +56,18 @@ pub enum SortingMethod { } /// Available sorting orders -#[derive(Deserialize, Clone, EnumString, Display, Copy)] +#[derive(Deserialize, Default, Clone, EnumString, Display, Copy, ValueEnum)] pub enum SortingOrder { /// Ascending order #[serde(alias = "asc")] #[strum(serialize = "asc")] - Ascending, + Asc, /// Descending order + #[default] #[serde(alias = "desc")] #[strum(serialize = "desc")] - Descending, + Desc, } #[derive(PartialEq, Eq)] @@ -223,7 +226,7 @@ pub fn directory_listing( res }; - let mut query_params = extract_query_parameters(req); + let query_params = extract_query_parameters(req); let mut entries: Vec = Vec::new(); let mut readme: Option<(String, String)> = None; @@ -299,15 +302,7 @@ pub fn directory_listing( } } - if query_params.sort.is_none() { - query_params.sort = conf.default_sorting_method - } - - if query_params.order.is_none() { - query_params.order = conf.default_sorting_order - } - - match query_params.sort.unwrap_or(SortingMethod::Name) { + match query_params.sort.unwrap_or(conf.default_sorting_method) { SortingMethod::Name => entries.sort_by(|e1, e2| { alphanumeric_sort::compare_str(e1.name.to_lowercase(), e2.name.to_lowercase()) }), @@ -327,7 +322,7 @@ pub fn directory_listing( }), }; - if let Some(SortingOrder::Ascending) = query_params.order { + if let SortingOrder::Asc = query_params.order.unwrap_or(conf.default_sorting_order) { entries.reverse() } -- cgit v1.2.3