From 11052951b74b9ad4b6a9412ae490086235f9154b Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 3 Jan 2021 13:40:40 +0100 Subject: Rewrite in Rust --- src/queries.rs | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/queries.rs (limited to 'src/queries.rs') diff --git a/src/queries.rs b/src/queries.rs new file mode 100644 index 0000000..a7ba28c --- /dev/null +++ b/src/queries.rs @@ -0,0 +1,62 @@ +use crate::model::frequency::Frequency; +use serde::{Deserialize, Serialize}; + +#[derive(Deserialize, Serialize, Clone)] +pub struct Payments { + pub page: Option, + pub search: Option, + pub frequency: Option, + pub highlight: Option, +} + +pub fn payments_url(q: Payments) -> String { + let mut params = Vec::new(); + + match q.page { + None | Some(1) => (), + Some(p) => params.push(format!("page={}", p)), + }; + + match q.search { + Some(s) => { + if !s.is_empty() { + params.push(format!("search={}", s)); + } + } + _ => (), + }; + + match q.frequency { + Some(Frequency::Monthly) => { + params.push("frequency=Monthly".to_string()) + } + _ => (), + }; + + match q.highlight { + Some(id) => params.push(format!("highlight={}", id)), + _ => (), + }; + + if params.is_empty() { + "".to_string() + } else { + format!("?{}", params.join("&")) + } +} + +#[derive(Deserialize, Serialize, Clone)] +pub struct Incomes { + pub page: Option, + pub highlight: Option, +} + +#[derive(Deserialize, Serialize, Clone)] +pub struct Categories { + pub highlight: Option, +} + +#[derive(Deserialize, Serialize)] +pub struct PaymentCategory { + pub payment_name: String, +} -- cgit v1.2.3