summaryrefslogtreecommitdiff
path: root/common/rust/src/payloads.rs
diff options
context:
space:
mode:
Diffstat (limited to 'common/rust/src/payloads.rs')
-rw-r--r--common/rust/src/payloads.rs259
1 files changed, 6 insertions, 253 deletions
diff --git a/common/rust/src/payloads.rs b/common/rust/src/payloads.rs
index fd7717d..454baf1 100644
--- a/common/rust/src/payloads.rs
+++ b/common/rust/src/payloads.rs
@@ -1,27 +1,19 @@
use std::fmt::Debug;
use serde::{Deserialize, Serialize};
+use twilight_model::gateway::event::Event;
+use crate::serializable_event::SerializableEvent;
-use crate::discord_models::{
- application::Application,
- channel::{Channel, Message, ThreadMember},
- emoji::Emoji,
- gateway::PresenceUpdate,
- guild::{Guild, GuildMember, Integration},
- invite::InviteTargetTypes,
- permissions::Role,
- slash_commands::{ApplicationCommand, Interaction},
- stage_instance::StageInstance,
- user::User,
- voice::VoiceState,
-};
+#[derive(Deserialize, Serialize, Debug, Clone)]
+pub struct SerializeHelper(#[serde(with = "SerializableEvent")] pub Event);
/// Payload send to the nova cache queues
#[derive(Serialize, Deserialize, Debug, Clone)]
// #[serde(bound(deserialize = "T: Deserialize<'de> + std::default::Default + Clone"))]
pub struct CachePayload {
pub tracing: Tracing,
- pub data: CacheData,
+ #[serde(flatten)]
+ pub data: SerializeHelper,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
@@ -29,242 +21,3 @@ pub struct Tracing {
pub node_id: String,
pub span: Option<String>,
}
-
-#[derive(Serialize, Deserialize, Debug, Clone)]
-pub enum CacheData {
- Ready {
- version: u8,
- user: User,
- guilds: Vec<Guild>,
- session_id: String,
- shard: Option<Vec<i64>>,
- application: Application,
- },
- ApplicationCommandCreate {
- guild_id: Option<String>,
- command: ApplicationCommand,
- },
- ApplicationCommandUpdate {
- guild_id: Option<String>,
- command: ApplicationCommand,
- },
- ApplicationCommandDelete {
- guild_id: Option<String>,
- command: ApplicationCommand,
- },
- ChannelCreate {
- channel: Channel,
- },
- ChannelUpdate {
- channel: Channel,
- },
- ChannelDelete {
- channel: Channel,
- },
- ThreadCreate {
- channel: Channel,
- },
- ThreadUpdate {
- channel: Channel,
- },
- ThreadDelete {
- channel: Channel,
- },
- ThreadListSync {
- guild_id: String,
- channel_ids: Option<Vec<String>>,
- threads: Vec<Channel>,
- members: Vec<ThreadMember>,
- },
- ThreadMemberUpdate {
- member: ThreadMember,
- },
- ThreadMembersUpdate {
- id: String,
- guild_id: String,
- member_count: i64,
- added_members: Option<Vec<ThreadMember>>,
- removed_member_ids: Option<Vec<String>>,
- },
- ChannelPinsUpdate {
- guild_id: Option<String>,
- channel_id: String,
- last_pin_timestamp: Option<String>,
- },
- GuildCreate {
- guild: Guild,
- },
- GuildUpdate {
- guild: Guild,
- },
- GuildDelete {
- guild: Guild,
- },
- GuildBanAdd {
- guild_id: String,
- user: User,
- },
- GuildBanRemove {
- guild_id: String,
- user: User,
- },
- GuildEmojisUpdate {
- guild_id: String,
- emojis: Vec<Emoji>,
- },
- GuildIntegrationsUpdate {
- guild_id: String,
- },
- GuildMemberAdd {
- guild_id: String,
- member: GuildMember,
- },
- GuildMemberRemove {
- guild_id: String,
- user: User,
- },
- GuildMemberUpdate {
- guild_id: String,
- roles: Vec<String>,
- user: User,
- nick: Option<String>,
- joined_at: Option<String>,
- premium_since: Option<String>,
- deaf: Option<bool>,
- mute: Option<bool>,
- pending: Option<bool>,
- },
- GuildMembersChunk {
- guild_id: String,
- members: Vec<GuildMember>,
- chunk_index: i64,
- chunk_count: i64,
- not_found: Option<Vec<String>>,
- presences: Option<Vec<PresenceUpdate>>,
- nonce: Option<String>,
- },
- GuildRoleCreate {
- guild_id: String,
- role: Role,
- },
- GuildRoleUpdate {
- guild_id: String,
- role: Role,
- },
- GuildRoleDelete {
- guild_id: String,
- role_id: String,
- },
- IntegrationCreate {
- guild_id: String,
- integration: Integration,
- },
- IntegrationUpdate {
- guild_id: String,
- integration: Integration,
- },
- IntegrationDelete {
- id: String,
- guild_id: String,
- application_id: Option<String>,
- },
- InviteCreate {
- channel_id: String,
- code: String,
- created_at: String,
- guild_id: Option<String>,
- inviter: Option<User>,
- max_age: i64,
- max_uses: i64,
- target_type: Option<InviteTargetTypes>,
- target_user: Option<User>,
- target_application: Option<Application>,
- temporary: bool,
- uses: i64,
- },
- InviteDelete {
- channel_id: String,
- guild_id: Option<String>,
- code: String,
- },
- InteractionCreate {
- // boxed to avoid a large difference size between variants (https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant)
- interaction: Box<Interaction>,
- },
- MessageCreate {
- message: Message,
- },
- MessageUpdate {
- message: Message,
- },
- MessageDelete {
- id: String,
- channel_id: String,
- guild_id: Option<String>,
- },
- MessageDeleteBulk {
- ids: Vec<String>,
- channel_id: String,
- guild_id: Option<String>,
- },
- MessageReactionAdd {
- user_id: String,
- channel_id: String,
- message_id: String,
- guild_id: Option<String>,
- member: Option<GuildMember>,
- emoji: Emoji,
- },
- MessageReactionRemove {
- user_id: String,
- channel_id: String,
- message_id: String,
- guild_id: Option<String>,
- emoji: Emoji,
- },
- MessageReactionRemoveAll {
- channel_id: String,
- message_id: String,
- guild_id: Option<String>,
- },
- MessageReactionRemoveEmoji {
- channel_id: String,
- message_id: String,
- guild_id: Option<String>,
- emoji: Emoji,
- },
- PresenceUpdate {
- presence: PresenceUpdate,
- },
- TypingStart {
- channel_id: String,
- guild_id: Option<String>,
- user_id: String,
- timestamp: i64,
- member: Option<GuildMember>,
- },
- UserUpdate {
- user: User,
- },
- VoiceStateUpdate {
- state: VoiceState,
- },
- VoiceServerUpdate {
- token: String,
- guild_id: String,
- endpoint: Option<String>,
- },
- WebhookUpdate {
- guild_id: String,
- channel_id: String,
- },
- StageInstanceCreate {
- instance: StageInstance,
- },
- StageInstanceUpdate {
- instance: StageInstance,
- },
- StageInstanceDelete {
- instance: StageInstance,
- },
-}