diff --git a/src/types/entities/invite.rs b/src/types/entities/invite.rs index 8455f16..caec03f 100644 --- a/src/types/entities/invite.rs +++ b/src/types/entities/invite.rs @@ -5,7 +5,8 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; -use crate::types::{Snowflake, WelcomeScreenObject, Shared, InviteFlags, InviteType, InviteTargetType}; +use crate::types::{Snowflake, WelcomeScreenObject, Shared, InviteFlags, InviteType, InviteTargetType, Guild, VerificationLevel}; +use crate::types::types::guild_configuration::GuildFeaturesList; use super::guild::GuildScheduledEvent; use super::{Application, Channel, GuildMember, NSFWLevel, User}; @@ -55,8 +56,8 @@ pub struct InviteGuild { pub name: String, pub icon: Option, pub splash: Option, - pub verification_level: i32, - pub features: Vec, + pub verification_level: VerificationLevel, + pub features: GuildFeaturesList, pub vanity_url_code: Option, pub description: Option, pub banner: Option, @@ -68,6 +69,32 @@ pub struct InviteGuild { pub welcome_screen: Option, } +impl From for InviteGuild { + fn from(value: Guild) -> Self { + Self { + id: value.id, + name: value.name.unwrap_or_default(), + icon: value.icon, + splash: value.splash, + verification_level: value.verification_level.unwrap_or_default(), + features: value.features.unwrap_or_default(), + vanity_url_code: value.vanity_url_code, + description: value.description, + banner: value.banner, + premium_subscription_count: value.premium_subscription_count, + nsfw_deprecated: None, + nsfw_level: value.nsfw_level.unwrap_or_default(), + welcome_screen: value.welcome_screen.map(|obj| { + #[cfg(feature = "sqlx")] + let res = obj.0; + #[cfg(not(feature = "sqlx"))] + let res = obj; + res + }), + } + } +} + /// See #[derive(Debug, Serialize, Deserialize)] pub struct InviteStageInstance { diff --git a/src/types/schema/invites.rs b/src/types/schema/invites.rs new file mode 100644 index 0000000..6bf2131 --- /dev/null +++ b/src/types/schema/invites.rs @@ -0,0 +1,10 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, PartialOrd, Eq, Ord)] +/// Query parameters for the `Get Invite` route. +/// +/// # Reference: +/// Read: +pub struct GetInvitesSchema { + pub with_counts: Option, +} \ No newline at end of file diff --git a/src/types/schema/mod.rs b/src/types/schema/mod.rs index d353e09..ef3233d 100644 --- a/src/types/schema/mod.rs +++ b/src/types/schema/mod.rs @@ -10,6 +10,7 @@ pub use message::*; pub use relationship::*; pub use role::*; pub use user::*; +pub use invites::*; mod apierror; mod auth; @@ -19,3 +20,4 @@ mod message; mod relationship; mod role; mod user; +mod invites;