impl Hash for Guild
This commit is contained in:
parent
b7ae75f7ce
commit
1340a11a65
|
@ -18,7 +18,7 @@ use crate::types::config::types::subconfigs::guild::{
|
||||||
};
|
};
|
||||||
use crate::types::{Error, GuildError};
|
use crate::types::{Error, GuildError};
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]
|
#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize, Hash)]
|
||||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
pub enum GuildFeatures {
|
pub enum GuildFeatures {
|
||||||
ActivitiesAlpha,
|
ActivitiesAlpha,
|
||||||
|
@ -139,7 +139,7 @@ pub enum GuildFeatures {
|
||||||
InvitesClosed,
|
InvitesClosed,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize, Eq)]
|
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize, Eq, Hash)]
|
||||||
pub struct GuildFeaturesList(Vec<GuildFeatures>);
|
pub struct GuildFeaturesList(Vec<GuildFeatures>);
|
||||||
|
|
||||||
impl Deref for GuildFeaturesList {
|
impl Deref for GuildFeaturesList {
|
||||||
|
|
|
@ -35,6 +35,19 @@ pub struct Emoji {
|
||||||
pub available: Option<bool>,
|
pub available: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl std::hash::Hash for Emoji {
|
||||||
|
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
|
||||||
|
self.id.hash(state);
|
||||||
|
self.name.hash(state);
|
||||||
|
self.roles.hash(state);
|
||||||
|
self.roles.hash(state);
|
||||||
|
self.require_colons.hash(state);
|
||||||
|
self.managed.hash(state);
|
||||||
|
self.animated.hash(state);
|
||||||
|
self.available.hash(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl PartialEq for Emoji {
|
impl PartialEq for Emoji {
|
||||||
fn eq(&self, other: &Self) -> bool {
|
fn eq(&self, other: &Self) -> bool {
|
||||||
!(self.id != other.id
|
!(self.id != other.id
|
||||||
|
|
|
@ -111,8 +111,60 @@ pub struct Guild {
|
||||||
pub widget_enabled: Option<bool>,
|
pub widget_enabled: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl std::hash::Hash for Guild {
|
||||||
|
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
|
||||||
|
self.afk_channel_id.hash(state);
|
||||||
|
self.afk_timeout.hash(state);
|
||||||
|
self.application_id.hash(state);
|
||||||
|
self.approximate_member_count.hash(state);
|
||||||
|
self.approximate_presence_count.hash(state);
|
||||||
|
self.banner.hash(state);
|
||||||
|
self.bans.hash(state);
|
||||||
|
self.default_message_notifications.hash(state);
|
||||||
|
self.description.hash(state);
|
||||||
|
self.discovery_splash.hash(state);
|
||||||
|
self.explicit_content_filter.hash(state);
|
||||||
|
self.features.hash(state);
|
||||||
|
self.icon.hash(state);
|
||||||
|
self.icon_hash.hash(state);
|
||||||
|
self.id.hash(state);
|
||||||
|
self.invites.hash(state);
|
||||||
|
self.joined_at.hash(state);
|
||||||
|
self.large.hash(state);
|
||||||
|
self.max_members.hash(state);
|
||||||
|
self.max_presences.hash(state);
|
||||||
|
self.max_stage_video_channel_users.hash(state);
|
||||||
|
self.max_video_channel_users.hash(state);
|
||||||
|
self.mfa_level.hash(state);
|
||||||
|
self.name.hash(state);
|
||||||
|
self.nsfw_level.hash(state);
|
||||||
|
self.owner.hash(state);
|
||||||
|
self.owner_id.hash(state);
|
||||||
|
self.permissions.hash(state);
|
||||||
|
self.preferred_locale.hash(state);
|
||||||
|
self.premium_progress_bar_enabled.hash(state);
|
||||||
|
self.premium_subscription_count.hash(state);
|
||||||
|
self.premium_tier.hash(state);
|
||||||
|
self.primary_category_id.hash(state);
|
||||||
|
self.public_updates_channel_id.hash(state);
|
||||||
|
self.region.hash(state);
|
||||||
|
self.rules_channel.hash(state);
|
||||||
|
self.rules_channel_id.hash(state);
|
||||||
|
self.splash.hash(state);
|
||||||
|
self.stickers.hash(state);
|
||||||
|
self.system_channel_flags.hash(state);
|
||||||
|
self.system_channel_id.hash(state);
|
||||||
|
self.vanity_url_code.hash(state);
|
||||||
|
self.verification_level.hash(state);
|
||||||
|
self.welcome_screen.hash(state);
|
||||||
|
self.welcome_screen.hash(state);
|
||||||
|
self.widget_channel_id.hash(state);
|
||||||
|
self.widget_enabled.hash(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// See <https://docs.spacebar.chat/routes/#get-/guilds/-guild_id-/bans/-user->
|
/// See <https://docs.spacebar.chat/routes/#get-/guilds/-guild_id-/bans/-user->
|
||||||
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Eq)]
|
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Eq, Hash)]
|
||||||
#[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))]
|
#[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))]
|
||||||
pub struct GuildBan {
|
pub struct GuildBan {
|
||||||
pub user: PublicUser,
|
pub user: PublicUser,
|
||||||
|
@ -142,7 +194,26 @@ pub struct GuildInvite {
|
||||||
pub vanity_url: Option<bool>,
|
pub vanity_url: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
|
impl std::hash::Hash for GuildInvite {
|
||||||
|
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
|
||||||
|
self.code.hash(state);
|
||||||
|
self.temporary.hash(state);
|
||||||
|
self.uses.hash(state);
|
||||||
|
self.max_uses.hash(state);
|
||||||
|
self.max_age.hash(state);
|
||||||
|
self.created_at.hash(state);
|
||||||
|
self.expires_at.hash(state);
|
||||||
|
self.guild_id.hash(state);
|
||||||
|
self.channel_id.hash(state);
|
||||||
|
self.inviter_id.hash(state);
|
||||||
|
self.target_user_id.hash(state);
|
||||||
|
self.target_user.hash(state);
|
||||||
|
self.target_user_type.hash(state);
|
||||||
|
self.vanity_url.hash(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Hash)]
|
||||||
pub struct UnavailableGuild {
|
pub struct UnavailableGuild {
|
||||||
id: Snowflake,
|
id: Snowflake,
|
||||||
unavailable: bool,
|
unavailable: bool,
|
||||||
|
@ -209,7 +280,7 @@ pub struct GuildScheduledEventEntityMetadata {
|
||||||
pub location: Option<String>,
|
pub location: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Default, Clone, Eq, PartialEq)]
|
#[derive(Serialize, Deserialize, Debug, Default, Clone, Eq, PartialEq, Hash)]
|
||||||
pub struct VoiceRegion {
|
pub struct VoiceRegion {
|
||||||
id: String,
|
id: String,
|
||||||
name: String,
|
name: String,
|
||||||
|
@ -218,7 +289,7 @@ pub struct VoiceRegion {
|
||||||
custom: bool,
|
custom: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
|
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq, Hash, Copy)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#message-notification-level>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#message-notification-level>
|
||||||
|
@ -228,7 +299,7 @@ pub enum MessageNotificationLevel {
|
||||||
OnlyMentions = 1,
|
OnlyMentions = 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
|
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq, Hash, Copy)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#explicit-content-filter-level>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#explicit-content-filter-level>
|
||||||
|
@ -239,7 +310,7 @@ pub enum ExplicitContentFilterLevel {
|
||||||
AllMembers = 2,
|
AllMembers = 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
|
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq, Hash, Copy)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
|
||||||
|
@ -252,7 +323,7 @@ pub enum VerificationLevel {
|
||||||
VeryHigh = 4,
|
VeryHigh = 4,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
|
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq, Hash, Copy)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
|
||||||
|
@ -262,7 +333,7 @@ pub enum MFALevel {
|
||||||
Elevated = 1,
|
Elevated = 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
|
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq, Hash, Copy)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
|
||||||
|
@ -274,7 +345,7 @@ pub enum NSFWLevel {
|
||||||
AgeRestricted = 3,
|
AgeRestricted = 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
|
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq, Hash, Copy)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
|
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
|
||||||
|
|
|
@ -28,6 +28,22 @@ pub struct Sticker {
|
||||||
pub sort_value: Option<u8>,
|
pub sort_value: Option<u8>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl std::hash::Hash for Sticker {
|
||||||
|
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
|
||||||
|
self.id.hash(state);
|
||||||
|
self.pack_id.hash(state);
|
||||||
|
self.name.hash(state);
|
||||||
|
self.description.hash(state);
|
||||||
|
self.tags.hash(state);
|
||||||
|
self.asset.hash(state);
|
||||||
|
self.sticker_type.hash(state);
|
||||||
|
self.format_type.hash(state);
|
||||||
|
self.available.hash(state);
|
||||||
|
self.guild_id.hash(state);
|
||||||
|
self.sort_value.hash(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl PartialEq for Sticker {
|
impl PartialEq for Sticker {
|
||||||
fn eq(&self, other: &Self) -> bool {
|
fn eq(&self, other: &Self) -> bool {
|
||||||
self.id == other.id
|
self.id == other.id
|
||||||
|
|
|
@ -27,7 +27,7 @@ impl User {
|
||||||
PublicUser::from(self)
|
PublicUser::from(self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Eq)]
|
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Eq, Hash)]
|
||||||
#[cfg_attr(feature = "client", derive(Updateable, Composite))]
|
#[cfg_attr(feature = "client", derive(Updateable, Composite))]
|
||||||
#[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))]
|
#[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))]
|
||||||
pub struct User {
|
pub struct User {
|
||||||
|
@ -63,7 +63,7 @@ pub struct User {
|
||||||
pub disabled: Option<bool>,
|
pub disabled: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize, Hash)]
|
||||||
pub struct PublicUser {
|
pub struct PublicUser {
|
||||||
pub id: Snowflake,
|
pub id: Snowflake,
|
||||||
pub username: Option<String>,
|
pub username: Option<String>,
|
||||||
|
|
|
@ -2,14 +2,14 @@ use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::types::utils::Snowflake;
|
use crate::types::utils::Snowflake;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
|
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Hash)]
|
||||||
pub struct WelcomeScreenObject {
|
pub struct WelcomeScreenObject {
|
||||||
pub enabled: bool,
|
pub enabled: bool,
|
||||||
pub description: Option<String>,
|
pub description: Option<String>,
|
||||||
pub welcome_channels: Vec<WelcomeScreenChannel>,
|
pub welcome_channels: Vec<WelcomeScreenChannel>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
|
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Hash)]
|
||||||
pub struct WelcomeScreenChannel {
|
pub struct WelcomeScreenChannel {
|
||||||
pub channel_id: Snowflake,
|
pub channel_id: Snowflake,
|
||||||
pub description: String,
|
pub description: String,
|
||||||
|
|
Loading…
Reference in New Issue