From 20baada605308992eccc9a94e5c82b84dbbdbbe1 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Tue, 15 Aug 2023 17:38:53 +0200 Subject: [PATCH] Add Composite to some types --- src/types/entities/channel.rs | 13 ++++++++----- src/types/entities/emoji.rs | 6 ++++-- src/types/entities/guild.rs | 10 +++++++--- src/types/entities/role.rs | 4 +++- src/types/entities/user.rs | 7 +++++-- src/types/entities/voice_state.rs | 6 ++++-- src/types/entities/webhook.rs | 4 +++- 7 files changed, 34 insertions(+), 16 deletions(-) diff --git a/src/types/entities/channel.rs b/src/types/entities/channel.rs index 96cf557..a0c96ed 100644 --- a/src/types/entities/channel.rs +++ b/src/types/entities/channel.rs @@ -1,18 +1,19 @@ use std::sync::{Arc, RwLock}; -use chorus_macros::Updateable; +use chorus_macros::{observe_option_vec, Composite, Updateable}; use chrono::Utc; use serde::{Deserialize, Serialize}; use serde_aux::prelude::deserialize_string_from_number; use serde_repr::{Deserialize_repr, Serialize_repr}; -use crate::gateway::Updateable; +use crate::gateway::{GatewayHandle, Updateable}; use crate::types::{ entities::{GuildMember, User}, utils::Snowflake, + Composite, }; -#[derive(Default, Debug, Serialize, Deserialize, Clone, Updateable)] +#[derive(Default, Debug, Serialize, Deserialize, Clone, Updateable, Composite)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] /// Represents a guild of private channel /// @@ -48,7 +49,7 @@ pub struct Channel { pub last_pin_timestamp: Option, pub managed: Option, #[cfg_attr(feature = "sqlx", sqlx(skip))] - pub member: Option>>, + pub member: Option, pub member_count: Option, pub message_count: Option, pub name: Option, @@ -58,11 +59,13 @@ pub struct Channel { #[cfg(feature = "sqlx")] pub permission_overwrites: Option>>, #[cfg(not(feature = "sqlx"))] + #[observe_option_vec] pub permission_overwrites: Option>>>, pub permissions: Option, pub position: Option, pub rate_limit_per_user: Option, #[cfg_attr(feature = "sqlx", sqlx(skip))] + #[observe_option_vec] pub recipients: Option>>>, pub rtc_region: Option, #[cfg_attr(feature = "sqlx", sqlx(skip))] @@ -122,7 +125,7 @@ pub struct Tag { pub emoji_name: Option, } -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, PartialOrd)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, PartialOrd, Updateable)] pub struct PermissionOverwrite { pub id: Snowflake, #[serde(rename = "type")] diff --git a/src/types/entities/emoji.rs b/src/types/entities/emoji.rs index f96b2b5..8f73091 100644 --- a/src/types/entities/emoji.rs +++ b/src/types/entities/emoji.rs @@ -1,16 +1,18 @@ use std::sync::{Arc, RwLock}; +use chorus_macros::Updateable; use serde::{Deserialize, Serialize}; +use crate::gateway::Updateable; use crate::types::entities::User; use crate::types::Snowflake; -#[derive(Debug, Clone, Deserialize, Serialize, Default)] +#[derive(Debug, Clone, Deserialize, Serialize, Default, Updateable)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] /// # Reference /// See pub struct Emoji { - pub id: Option, + pub id: Snowflake, pub name: Option, #[cfg(feature = "sqlx")] pub roles: Option>>, diff --git a/src/types/entities/guild.rs b/src/types/entities/guild.rs index ed2be89..7f73403 100644 --- a/src/types/entities/guild.rs +++ b/src/types/entities/guild.rs @@ -1,6 +1,6 @@ use std::sync::{Arc, RwLock}; -use chorus_macros::{observe_option_vec, Composite, Updateable}; +use chorus_macros::{observe_option_vec, observe_vec, Composite, Updateable}; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use serde_repr::{Deserialize_repr, Serialize_repr}; @@ -37,6 +37,7 @@ pub struct Guild { pub discovery_splash: Option, #[cfg_attr(feature = "sqlx", sqlx(skip))] #[serde(default)] + #[observe_vec] pub emojis: Vec>>, pub explicit_content_filter: Option, //#[cfg_attr(feature = "sqlx", sqlx(try_from = "String"))] @@ -46,7 +47,7 @@ pub struct Guild { pub icon_hash: Option, pub id: Snowflake, #[cfg_attr(feature = "sqlx", sqlx(skip))] - pub invites: Option>>>, + pub invites: Option>, #[cfg_attr(feature = "sqlx", sqlx(skip))] pub joined_at: Option, pub large: Option, @@ -72,6 +73,7 @@ pub struct Guild { pub public_updates_channel_id: Option, pub region: Option, #[cfg_attr(feature = "sqlx", sqlx(skip))] + #[observe_option_vec] pub roles: Option>>>, #[cfg_attr(feature = "sqlx", sqlx(skip))] pub rules_channel: Option, @@ -85,13 +87,15 @@ pub struct Guild { pub vanity_url_code: Option, pub verification_level: Option, #[cfg_attr(feature = "sqlx", sqlx(skip))] + #[observe_option_vec] pub voice_states: Option>>>, #[cfg_attr(feature = "sqlx", sqlx(skip))] + #[observe_option_vec] pub webhooks: Option>>>, #[cfg(feature = "sqlx")] pub welcome_screen: Option>, #[cfg(not(feature = "sqlx"))] - pub welcome_screen: Option>>, + pub welcome_screen: Option, pub widget_channel_id: Option, pub widget_enabled: Option, } diff --git a/src/types/entities/role.rs b/src/types/entities/role.rs index 3ad53ce..7ca9597 100644 --- a/src/types/entities/role.rs +++ b/src/types/entities/role.rs @@ -1,10 +1,12 @@ use bitflags::bitflags; +use chorus_macros::Updateable; use serde::{Deserialize, Serialize}; use serde_aux::prelude::{deserialize_option_number_from_string, deserialize_string_from_number}; +use crate::gateway::Updateable; use crate::types::utils::Snowflake; -#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Updateable)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] /// See pub struct RoleObject { diff --git a/src/types/entities/user.rs b/src/types/entities/user.rs index 5b31b6d..9382ccb 100644 --- a/src/types/entities/user.rs +++ b/src/types/entities/user.rs @@ -1,8 +1,11 @@ -use crate::types::utils::Snowflake; +use chorus_macros::Updateable; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use serde_aux::prelude::deserialize_option_number_from_string; +use crate::gateway::Updateable; +use crate::types::utils::Snowflake; + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] #[cfg_attr(feature = "sqlx", derive(sqlx::Type))] pub struct UserData { @@ -15,7 +18,7 @@ impl User { PublicUser::from(self) } } -#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Eq, Updateable)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] pub struct User { pub id: Snowflake, diff --git a/src/types/entities/voice_state.rs b/src/types/entities/voice_state.rs index 9f6a2c0..9988162 100644 --- a/src/types/entities/voice_state.rs +++ b/src/types/entities/voice_state.rs @@ -1,15 +1,17 @@ use std::sync::{Arc, RwLock}; +use chorus_macros::Updateable; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; +use crate::gateway::Updateable; use crate::types::{ entities::{Guild, GuildMember}, utils::Snowflake, }; /// See -#[derive(Serialize, Deserialize, Debug, Default, Clone)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, Updateable)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] pub struct VoiceState { pub guild_id: Option, @@ -27,5 +29,5 @@ pub struct VoiceState { pub self_video: bool, pub suppress: bool, pub request_to_speak_timestamp: Option>, - pub id: Option, + pub id: Snowflake, } diff --git a/src/types/entities/webhook.rs b/src/types/entities/webhook.rs index 079f584..f6710bd 100644 --- a/src/types/entities/webhook.rs +++ b/src/types/entities/webhook.rs @@ -1,14 +1,16 @@ use std::sync::{Arc, RwLock}; +use chorus_macros::Updateable; use serde::{Deserialize, Serialize}; +use crate::gateway::Updateable; use crate::types::{ entities::{Guild, User}, utils::Snowflake, }; /// See -#[derive(Serialize, Deserialize, Debug, Default, Clone)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, Updateable)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] pub struct Webhook { pub id: Snowflake,