Utilize new macros and use distinct Flag types
This commit is contained in:
parent
656e5e31c0
commit
d89975819a
|
@ -31,7 +31,7 @@ pub struct Application {
|
|||
pub verify_key: String,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub owner: Shared<User>,
|
||||
pub flags: u64,
|
||||
pub flags: ApplicationFlags,
|
||||
#[cfg(feature = "sqlx")]
|
||||
pub redirect_uris: Option<sqlx::types::Json<Vec<String>>>,
|
||||
#[cfg(not(feature = "sqlx"))]
|
||||
|
@ -73,7 +73,7 @@ impl Default for Application {
|
|||
bot_require_code_grant: false,
|
||||
verify_key: "".to_string(),
|
||||
owner: Default::default(),
|
||||
flags: 0,
|
||||
flags: ApplicationFlags::empty(),
|
||||
redirect_uris: None,
|
||||
rpc_application_state: 0,
|
||||
store_application_state: 1,
|
||||
|
@ -93,12 +93,6 @@ impl Default for Application {
|
|||
}
|
||||
}
|
||||
|
||||
impl Application {
|
||||
pub fn flags(&self) -> ApplicationFlags {
|
||||
ApplicationFlags::from_bits(self.flags.to_owned()).unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
/// # Reference
|
||||
/// See <https://discord.com/developers/docs/resources/application#install-params-object>
|
||||
|
@ -109,6 +103,7 @@ pub struct InstallParams {
|
|||
|
||||
bitflags! {
|
||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||
/// # Reference
|
||||
/// See <https://discord.com/developers/docs/resources/application#application-object-application-flags>
|
||||
pub struct ApplicationFlags: u64 {
|
||||
|
|
|
@ -99,7 +99,7 @@ pub struct Guild {
|
|||
pub splash: Option<String>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub stickers: Option<Vec<Sticker>>,
|
||||
pub system_channel_flags: Option<u64>,
|
||||
pub system_channel_flags: Option<SystemChannelFlags>,
|
||||
pub system_channel_id: Option<Snowflake>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub vanity_url_code: Option<String>,
|
||||
|
@ -423,6 +423,7 @@ pub enum PremiumTier {
|
|||
|
||||
bitflags! {
|
||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||
/// # Reference
|
||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#system-channel-flags>
|
||||
pub struct SystemChannelFlags: u64 {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::types::Shared;
|
||||
use crate::types::{GuildMemberFlags, Shared};
|
||||
use crate::types::{entities::PublicUser, Snowflake};
|
||||
|
||||
#[derive(Debug, Deserialize, Default, Serialize, Clone)]
|
||||
|
@ -25,7 +25,7 @@ pub struct GuildMember {
|
|||
pub premium_since: Option<DateTime<Utc>>,
|
||||
pub deaf: bool,
|
||||
pub mute: bool,
|
||||
pub flags: Option<i32>,
|
||||
pub flags: Option<GuildMemberFlags>,
|
||||
pub pending: Option<bool>,
|
||||
pub permissions: Option<String>,
|
||||
pub communication_disabled_until: Option<DateTime<Utc>>,
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
use bitflags::bitflags;
|
||||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
@ -62,7 +63,7 @@ pub struct Message {
|
|||
pub message_reference: Option<sqlx::types::Json<MessageReference>>,
|
||||
#[cfg(not(feature = "sqlx"))]
|
||||
pub message_reference: Option<MessageReference>,
|
||||
pub flags: Option<u64>,
|
||||
pub flags: Option<MessageFlags>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub referenced_message: Option<Box<Message>>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
|
@ -260,3 +261,38 @@ pub struct MessageActivity {
|
|||
pub activity_type: i64,
|
||||
pub party_id: Option<String>,
|
||||
}
|
||||
|
||||
bitflags! {
|
||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash, PartialOrd)]
|
||||
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||
/// # Reference
|
||||
/// See <https://docs.discord.sex/resources/message#message-type>
|
||||
pub struct MessageFlags: u64 {
|
||||
/// This message has been published to subscribed channels (via Channel Following)
|
||||
const CROSSPOSTED = 1 << 0;
|
||||
/// This message originated from a message in another channel (via Channel Following)
|
||||
const IS_CROSSPOST = 1 << 1;
|
||||
/// Embeds will not be included when serializing this message
|
||||
const SUPPRESS_EMBEDS = 1 << 2;
|
||||
/// The source message for this crosspost has been deleted (via Channel Following)
|
||||
const SOURCE_MESSAGE_DELETED = 1 << 3;
|
||||
/// This message came from the urgent message system
|
||||
const URGENT = 1 << 4;
|
||||
/// This message has an associated thread, with the same ID as the message
|
||||
const HAS_THREAD = 1 << 5;
|
||||
/// This message is only visible to the user who invoked the interaction
|
||||
const EPHEMERAL = 1 << 6;
|
||||
/// This message is an interaction response and the bot is "thinking"
|
||||
const LOADING = 1 << 7;
|
||||
/// Some roles were not mentioned and added to the thread
|
||||
const FAILED_TO_MENTION_SOME_ROLES_IN_THREAD = 1 << 8;
|
||||
/// This message contains a link that impersonates Discord
|
||||
const SHOULD_SHOW_LINK_NOT_DISCORD_WARNING = 1 << 10;
|
||||
/// This message will not trigger push and desktop notifications
|
||||
const SUPPRESS_NOTIFICATIONS = 1 << 12;
|
||||
/// This message's audio attachments are rendered as voice messages
|
||||
const VOICE_MESSAGE = 1 << 13;
|
||||
/// This message has a forwarded message snapshot attached
|
||||
const HAS_SNAPSHOT = 1 << 14;
|
||||
}
|
||||
}
|
|
@ -72,6 +72,7 @@ pub struct RoleTags {
|
|||
|
||||
bitflags! {
|
||||
#[derive(Debug, Default, Clone, Hash, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||
/// Permissions limit what users of certain roles can do on a Guild to Guild basis.
|
||||
///
|
||||
/// # Reference:
|
||||
|
|
|
@ -54,7 +54,7 @@ pub struct User {
|
|||
/// So we need to account for that
|
||||
#[serde(default)]
|
||||
#[serde(deserialize_with = "deserialize_option_number_from_string")]
|
||||
pub flags: Option<i32>,
|
||||
pub flags: Option<UserFlags>,
|
||||
pub premium_since: Option<DateTime<Utc>>,
|
||||
pub premium_type: Option<u8>,
|
||||
pub pronouns: Option<String>,
|
||||
|
@ -112,7 +112,7 @@ const CUSTOM_USER_FLAG_OFFSET: u64 = 1 << 32;
|
|||
|
||||
bitflags::bitflags! {
|
||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
||||
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||
pub struct UserFlags: u64 {
|
||||
const DISCORD_EMPLOYEE = 1 << 0;
|
||||
const PARTNERED_SERVER_OWNER = 1 << 1;
|
||||
|
|
|
@ -132,6 +132,7 @@ impl Default for CreateChannelInviteSchema {
|
|||
|
||||
bitflags! {
|
||||
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
|
||||
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||
pub struct InviteFlags: u64 {
|
||||
const GUEST = 1 << 0;
|
||||
const VIEWED = 1 << 1;
|
||||
|
@ -165,29 +166,6 @@ impl<'de> Deserialize<'de> for InviteFlags {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "sqlx")]
|
||||
impl sqlx::Type<sqlx::MySql> for InviteFlags {
|
||||
fn type_info() -> sqlx::mysql::MySqlTypeInfo {
|
||||
u64::type_info()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "sqlx")]
|
||||
impl<'q> sqlx::Encode<'q, sqlx::MySql> for InviteFlags {
|
||||
fn encode_by_ref(&self, buf: &mut <sqlx::MySql as sqlx::database::HasArguments<'q>>::ArgumentBuffer) -> sqlx::encode::IsNull {
|
||||
u64::encode_by_ref(&self.0.0, buf)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "sqlx")]
|
||||
impl<'r> sqlx::Decode<'r, sqlx::MySql> for InviteFlags {
|
||||
fn decode(value: <sqlx::MySql as sqlx::database::HasValueRef<'r>>::ValueRef) -> Result<Self, sqlx::error::BoxDynError> {
|
||||
let raw = u64::decode(value)?;
|
||||
|
||||
Ok(Self::from_bits(raw).unwrap())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Clone, Copy, Default, PartialOrd, Ord, PartialEq, Eq)]
|
||||
#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
|
|
|
@ -132,6 +132,7 @@ pub struct ModifyGuildMemberSchema {
|
|||
|
||||
bitflags! {
|
||||
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, PartialOrd, Ord)]
|
||||
#[cfg_attr(feature = "sqlx", derive(chorus_macros::SqlxBitFlags))]
|
||||
/// Represents the flags of a Guild Member.
|
||||
///
|
||||
/// # Reference:
|
||||
|
|
|
@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize};
|
|||
use crate::types::entities::{
|
||||
AllowedMention, Component, Embed, MessageReference, PartialDiscordFileAttachment,
|
||||
};
|
||||
use crate::types::{Attachment, Snowflake};
|
||||
use crate::types::{Attachment, MessageFlags, Snowflake};
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize, Clone, PartialEq)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
|
@ -123,7 +123,7 @@ pub struct MessageModifySchema {
|
|||
embed: Option<Embed>,
|
||||
allowed_mentions: Option<AllowedMention>,
|
||||
components: Option<Vec<Component>>,
|
||||
flags: Option<i32>,
|
||||
flags: Option<MessageFlags>,
|
||||
files: Option<Vec<u8>>,
|
||||
payload_json: Option<String>,
|
||||
attachments: Option<Vec<Attachment>>,
|
||||
|
|
Loading…
Reference in New Issue