From d64004b308511f9e35e4c328a19bb97bfbf21edd Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Fri, 18 Aug 2023 23:34:00 +0200 Subject: [PATCH] Make id(&self) return Option --- src/types/entities/auto_moderation.rs | 4 +++- src/types/events/auto_moderation.rs | 14 +++++++++++++- src/types/events/channel.rs | 4 ++-- src/types/events/guild.rs | 8 ++++---- src/types/events/mod.rs | 2 +- 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/types/entities/auto_moderation.rs b/src/types/entities/auto_moderation.rs index 77f4fa2..eaec2b0 100644 --- a/src/types/entities/auto_moderation.rs +++ b/src/types/entities/auto_moderation.rs @@ -1,11 +1,13 @@ use std::sync::{Arc, RwLock}; +use crate::gateway::Updateable; +use chorus_macros::Updateable; use serde::{Deserialize, Serialize}; use serde_repr::{Deserialize_repr, Serialize_repr}; use crate::types::utils::Snowflake; -#[derive(Serialize, Deserialize, Debug, Default, Clone)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, Updateable)] /// See pub struct AutoModerationRule { pub id: Snowflake, diff --git a/src/types/events/auto_moderation.rs b/src/types/events/auto_moderation.rs index 0a1600b..376e523 100644 --- a/src/types/events/auto_moderation.rs +++ b/src/types/events/auto_moderation.rs @@ -1,3 +1,5 @@ +use crate::types::JsonField; +use chorus_macros::JsonField; use serde::{Deserialize, Serialize}; use crate::types::{ @@ -5,6 +7,8 @@ use crate::types::{ WebSocketEvent, }; +use super::UpdateMessage; + #[derive(Debug, Deserialize, Serialize, Default, Clone)] /// See pub struct AutoModerationRuleCreate { @@ -14,11 +18,19 @@ pub struct AutoModerationRuleCreate { impl WebSocketEvent for AutoModerationRuleCreate {} -#[derive(Debug, Deserialize, Serialize, Default, Clone)] +#[derive(Debug, Deserialize, Serialize, Default, Clone, JsonField)] /// See pub struct AutoModerationRuleUpdate { #[serde(flatten)] pub rule: AutoModerationRule, + #[serde(skip)] + pub json: String, +} + +impl UpdateMessage for AutoModerationRuleUpdate { + fn id(&self) -> Option { + Some(self.rule.id) + } } impl WebSocketEvent for AutoModerationRuleUpdate {} diff --git a/src/types/events/channel.rs b/src/types/events/channel.rs index 017c50e..d49cf6e 100644 --- a/src/types/events/channel.rs +++ b/src/types/events/channel.rs @@ -43,8 +43,8 @@ impl UpdateMessage for ChannelUpdate { let mut write = object_to_update.write().unwrap(); *write = self.channel.clone(); } - fn id(&self) -> Snowflake { - self.channel.id + fn id(&self) -> Option { + Some(self.channel.id) } } diff --git a/src/types/events/guild.rs b/src/types/events/guild.rs index 84ac5b8..0afa9d6 100644 --- a/src/types/events/guild.rs +++ b/src/types/events/guild.rs @@ -180,8 +180,8 @@ pub struct GuildRoleCreate { impl WebSocketEvent for GuildRoleCreate {} impl UpdateMessage for GuildRoleCreate { - fn id(&self) -> Snowflake { - self.guild_id + fn id(&self) -> Option { + Some(self.guild_id) } fn update(&mut self, object_to_update: Arc>) { @@ -210,8 +210,8 @@ pub struct GuildRoleUpdate { impl WebSocketEvent for GuildRoleUpdate {} impl UpdateMessage for GuildRoleUpdate { - fn id(&self) -> Snowflake { - self.role.id + fn id(&self) -> Option { + Some(self.role.id) } fn update(&mut self, object_to_update: Arc>) { diff --git a/src/types/events/mod.rs b/src/types/events/mod.rs index 0a296fb..4f287ce 100644 --- a/src/types/events/mod.rs +++ b/src/types/events/mod.rs @@ -122,7 +122,7 @@ where fn update(&mut self, object_to_update: Arc>) { update_object(self.get_json(), object_to_update) } - fn id(&self) -> Snowflake; + fn id(&self) -> Option; } pub(crate) trait JsonField: Clone {