From d724c0a0ceea09653c7ca926a37921675404c77e Mon Sep 17 00:00:00 2001 From: Baptiste Zahnow <75901978+LelouchFR@users.noreply.github.com> Date: Tue, 23 Apr 2024 21:45:55 +0200 Subject: [PATCH] fix `src/model/item.rs` (#92) --- src/lib.rs | 1 + src/model/item.rs | 79 ++++++++++++++++++++++++++++++----------------- src/utils.rs | 6 ++++ 3 files changed, 58 insertions(+), 28 deletions(-) create mode 100644 src/utils.rs diff --git a/src/lib.rs b/src/lib.rs index 2e492b2..39ab1c8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -88,6 +88,7 @@ async fn main() { pub mod db; pub mod model; pub mod queries; +pub mod utils; pub use model::filter::Filter; pub use queries::CookieError; pub use queries::VintedWrapper; diff --git a/src/model/item.rs b/src/model/item.rs index a9ff4e2..c501a3c 100644 --- a/src/model/item.rs +++ b/src/model/item.rs @@ -2,6 +2,7 @@ use super::{photo::Photo, user::AdvancedUser}; use crate::model::{Deserialize, Serialize}; #[cfg(feature = "redis")] use crate::model::{FromRedisValue, ToRedisArgs}; +use crate::utils::display_option; use std::fmt; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Hash, Eq)] @@ -127,23 +128,37 @@ pub struct AdvancedItem { pub user: AdvancedUser, // Some flags - pub is_for_sell: bool, - pub is_for_swap: bool, - pub is_for_give_away: bool, - pub is_handicraft: bool, - pub is_processing: bool, - pub is_draft: bool, - pub promoted: bool, - pub package_size_standard: bool, - pub related_catalogs_enabled: bool, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_for_sell: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_for_swap: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_for_give_away: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_handicraft: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_processing: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_draft: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub promoted: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub package_size_standard: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub related_catalogs_enabled: Option, // More flags, just in i32 - pub is_hidden: i32, - pub is_reserved: i32, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_hidden: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_reserved: Option, #[serde(skip_serializing_if = "Option::is_none")] pub reserved_for_user_id: Option, - pub is_visible: i32, - pub is_unisex: i32, - pub is_closed: i32, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_visible: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_unisex: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub is_closed: Option, } impl fmt::Display for AdvancedItem { @@ -185,24 +200,32 @@ impl fmt::Display for AdvancedItem { writeln!(f, "Price: {} {}", self.price_numeric, self.currency)?; writeln!(f, "\nFlags: {{")?; - writeln!(f, " is_for_sell: {}", self.is_for_sell)?; - writeln!(f, " is_for_swap: {}", self.is_for_swap)?; - writeln!(f, " is_for_give_away: {}", self.is_for_give_away)?; - writeln!(f, " is_handicraft: {}", self.is_handicraft)?; - writeln!(f, " is_processing: {}", self.is_processing)?; - writeln!(f, " is_draft: {}", self.is_draft)?; - writeln!(f, " promoted: {}", self.promoted)?; - writeln!(f, " package_size_standard: {}", self.package_size_standard)?; + writeln!(f, " is_for_sell: {}", display_option(self.is_for_sell))?; + writeln!(f, " is_for_swap: {}", display_option(self.is_for_swap))?; + writeln!( + f, + " is_for_give_away: {}", + display_option(self.is_for_give_away) + )?; + writeln!(f, " is_handicraft: {}", display_option(self.is_handicraft))?; + writeln!(f, " is_processing: {}", display_option(self.is_processing))?; + writeln!(f, " is_draft: {}", display_option(self.is_draft))?; + writeln!(f, " promoted: {}", display_option(self.promoted))?; + writeln!( + f, + " package_size_standard: {}", + display_option(self.package_size_standard) + )?; writeln!( f, " related_catalogs_enabled: {}", - self.related_catalogs_enabled + display_option(self.related_catalogs_enabled) )?; - writeln!(f, " is_hidden: {}", self.is_hidden)?; - writeln!(f, " is_reserved: {}", self.is_reserved)?; - writeln!(f, " is_visible: {}", self.is_visible)?; - writeln!(f, " is_unisex: {}", self.is_unisex)?; - writeln!(f, " is_closed: {}", self.is_closed)?; + writeln!(f, " is_hidden: {}", display_option(self.is_hidden))?; + writeln!(f, " is_reserved: {}", display_option(self.is_reserved))?; + writeln!(f, " is_visible: {}", display_option(self.is_visible))?; + writeln!(f, " is_unisex: {}", display_option(self.is_unisex))?; + writeln!(f, " is_closed: {}", display_option(self.is_closed))?; writeln!(f, "}}\n")?; for (num, photo) in self.photos.iter().enumerate() { diff --git a/src/utils.rs b/src/utils.rs new file mode 100644 index 0000000..6456b0c --- /dev/null +++ b/src/utils.rs @@ -0,0 +1,6 @@ +pub fn display_option(value: Option) -> String { + match value { + Some(value) => value.to_string(), + None => "None".to_string(), + } +}