From 52fd062a9c1e6c1162b5852ee00687370b5ee232 Mon Sep 17 00:00:00 2001 From: DylanCa Date: Fri, 29 Dec 2023 02:50:05 +0100 Subject: [PATCH] Added activity model --- src/models/activity.rs | 164 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 src/models/activity.rs diff --git a/src/models/activity.rs b/src/models/activity.rs new file mode 100644 index 0000000..82589f1 --- /dev/null +++ b/src/models/activity.rs @@ -0,0 +1,164 @@ +use serde::Serialize; +use crate::models::activity_data::{activity_type::ActivityType, + activity_flag::ActivityFlag, + asset::Asset, + button::Button, + emoji::Emoji, + party::Party, + secret::Secret, + timestamp::Timestamp, }; + +/// Test Doc +#[derive(Serialize, Debug)] +pub struct Activity { + #[serde(skip_serializing)] + name: String, + + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(rename = "type")] + activity_type: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + url: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + created_at: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + timestamps: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + application_id: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + details: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + state: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + emoji: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + party: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + assets: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + secrets: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + instance: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + flags: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + buttons: Option>, +} + +impl Activity { + pub fn new() -> Activity { + Self { + name: "".to_string(), + activity_type: None, + url: None, + created_at: None, + timestamps: None, + application_id: None, + details: None, + state: None, + emoji: None, + party: None, + assets: None, + secrets: None, + instance: None, + flags: None, + buttons: None, + } + } + + pub fn set_name(&mut self, name: String) -> &mut Self { + self.name = name; + self + } + + pub fn set_activity_type(&mut self, activity_type: Option) -> &mut Self { + match activity_type { + Some(val) => self.activity_type = Some(val as i8), + _ => self.activity_type = None, + } + + self + } + + pub fn set_url(&mut self, url: Option) -> &mut Self { + self.url = url; + self + } + + pub fn set_created_at(&mut self, created_at: Option) -> &mut Self { + self.created_at = created_at; + self + } + + pub fn set_timestamps(&mut self, timestamps: Option) -> &mut Self { + self.timestamps = timestamps; + self + } + + pub fn set_application_id(&mut self, application_id: Option) -> &mut Self { + self.application_id = application_id; + self + } + + pub fn set_details(&mut self, details: Option) -> &mut Self { + self.details = details; + self + } + + pub fn set_state(&mut self, state: Option) -> &mut Self { + self.state = state; + self + } + + pub fn set_emoji(&mut self, emoji: Option) -> &mut Self { + self.emoji = emoji; + self + } + + pub fn set_party(&mut self, party: Option) -> &mut Self { + self.party = party; + self + } + + pub fn set_assets(&mut self, assets: Option) -> &mut Self { + self.assets = assets; + self + } + + pub fn set_secrets(&mut self, secrets: Option) -> &mut Self { + self.secrets = secrets; + self + } + + pub fn set_instance(&mut self, instance: Option) -> &mut Self { + self.instance = instance; + self + } + + pub fn set_flags(&mut self, flag: Option) -> &mut Self { + match flag { + Some(val) => self.flags = Some(val as i8), + _ => self.flags = None, + } + + self + } + + pub fn set_buttons(&mut self, buttons: Option>) -> &mut Self { + self.buttons = buttons; + self + } +} \ No newline at end of file