twilight_model/guild/audit_log/
integration.rs1use crate::{
2 guild::IntegrationAccount,
3 id::{marker::IntegrationMarker, Id},
4 user::User,
5 util::Timestamp,
6};
7use serde::{Deserialize, Serialize};
8
9#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
14pub struct AuditLogGuildIntegration {
15 #[serde(skip_serializing_if = "Option::is_none")]
17 pub account: Option<IntegrationAccount>,
18 #[serde(skip_serializing_if = "Option::is_none")]
20 pub enabled: Option<bool>,
21 #[serde(skip_serializing_if = "Option::is_none")]
23 pub expire_behavior: Option<u64>,
24 #[serde(skip_serializing_if = "Option::is_none")]
26 pub expire_grace_period: Option<u64>,
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub id: Option<Id<IntegrationMarker>>,
30 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
32 pub kind: Option<String>,
33 #[serde(skip_serializing_if = "Option::is_none")]
35 pub name: Option<String>,
36 #[serde(skip_serializing_if = "Option::is_none")]
38 pub role_id: Option<Id<IntegrationMarker>>,
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub synced_at: Option<Timestamp>,
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub syncing: Option<bool>,
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub user: Option<User>,
48}
49
50#[cfg(test)]
51mod tests {
52 use super::AuditLogGuildIntegration;
53 use serde::{Deserialize, Serialize};
54 use static_assertions::{assert_fields, assert_impl_all};
55 use std::{fmt::Debug, hash::Hash};
56
57 assert_fields!(
58 AuditLogGuildIntegration: account,
59 enabled,
60 expire_behavior,
61 expire_grace_period,
62 id,
63 kind,
64 name,
65 role_id,
66 synced_at,
67 syncing,
68 user
69 );
70 assert_impl_all!(
71 AuditLogGuildIntegration: Clone,
72 Debug,
73 Deserialize<'static>,
74 Eq,
75 Hash,
76 PartialEq,
77 Send,
78 Serialize,
79 Sync
80 );
81}