use serde::Deserialize;
use serde_json::Value;
use serde_repr::Deserialize_repr;
use crate::model::id::UserId;
#[derive(Debug, Clone, Deserialize)]
pub struct AuditLog {
pub audit_log_entries: Vec<AuditLogEntry>,
#[serde(default)]
pub users: Vec<Value>,
#[serde(default)]
pub webhooks: Vec<Value>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct AuditLogEntry {
pub id: String,
pub action_type: AuditLogEvent,
#[serde(default)]
pub user_id: Option<UserId>,
#[serde(default)]
pub target_id: Option<String>,
#[serde(default)]
pub reason: Option<String>,
#[serde(default)]
pub options: Option<Value>,
#[serde(default)]
pub changes: Option<Vec<AuditLogChange>>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct AuditLogChange {
pub key: String,
#[serde(default)]
pub old_value: Option<Value>,
#[serde(default)]
pub new_value: Option<Value>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize_repr)]
#[repr(u32)]
pub enum AuditLogEvent {
GuildUpdate = 1,
ChannelCreate = 10,
ChannelUpdate = 11,
ChannelDelete = 12,
ChannelOverwriteCreate = 13,
ChannelOverwriteUpdate = 14,
ChannelOverwriteDelete = 15,
MemberKick = 20,
MemberPrune = 21,
MemberBanAdd = 22,
MemberBanRemove = 23,
MemberUpdate = 24,
MemberRoleUpdate = 25,
MemberMove = 26,
MemberDisconnect = 27,
BotAdd = 28,
RoleCreate = 30,
RoleUpdate = 31,
RoleDelete = 32,
InviteCreate = 40,
InviteUpdate = 41,
InviteDelete = 42,
WebhookCreate = 50,
WebhookUpdate = 51,
WebhookDelete = 52,
EmojiCreate = 60,
EmojiUpdate = 61,
EmojiDelete = 62,
MessageDelete = 72,
MessageBulkDelete = 73,
MessagePin = 74,
MessageUnpin = 75,
StickerCreate = 90,
StickerUpdate = 91,
StickerDelete = 92,
}