1use serde::{Deserialize, Serialize};
2use std::fmt::{Display, Formatter, Result as FmtResult};
3
4#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11#[non_exhaustive]
12#[serde(rename_all = "snake_case")]
13pub enum AuditLogChangeKey {
14 AfkChannelId,
16 AfkTimeout,
18 Allow,
20 ApplicationId,
22 Archived,
24 Asset,
28 AutoArchiveDuration,
30 Available,
32 AvatarHash,
34 BannerHash,
36 Bitrate,
38 ChannelId,
40 Code,
42 Color,
44 CommandId,
46 CommunicationDisabledUntil,
48 Deaf,
50 DefaultAutoArchiveDuration,
52 DefaultMessageNotifications,
54 Deny,
56 Description,
58 DiscoverySplashHash,
60 EnableEmoticons,
62 EntityType,
64 ExpireBehavior,
66 ExpireGracePeriod,
68 ExplicitContentFilter,
70 FormatType,
72 GuildId,
74 Hoist,
76 IconHash,
78 Id,
80 ImageHash,
82 Invitable,
84 InviterId,
86 Location,
88 Locked,
90 MaxAge,
92 MaxUses,
94 Mentionable,
96 MfaLevel,
98 Mute,
100 Name,
102 Nick,
104 Nsfw,
106 NsfwLevel,
108 OwnerId,
110 PermissionOverwrites,
112 Permissions,
114 Position,
116 PreferredLocale,
118 PrivacyLevel,
120 PruneDeleteDays,
122 PublicUpdatesChannelId,
124 RateLimitPerUser,
126 Region,
128 #[serde(rename = "$add")]
130 RoleAdded,
131 #[serde(rename = "$remove")]
133 RoleRemoved,
134 RulesChannelId,
136 SplashHash,
138 Status,
140 SystemChannelId,
142 Tags,
144 Temporary,
146 Topic,
148 Type,
150 UnicodeEmoji,
152 UserLimit,
154 Uses,
156 VanityUrlCode,
158 VerificationLevel,
160 WidgetChannelId,
162 WidgetEnabled,
164}
165
166impl AuditLogChangeKey {
167 pub const fn name(self) -> &'static str {
185 match self {
186 Self::AfkChannelId => "afk_channel_id",
187 Self::AfkTimeout => "afk_timeout",
188 Self::Allow => "allow",
189 Self::ApplicationId => "application_id",
190 Self::Archived => "archived",
191 Self::Asset => "asset",
192 Self::AutoArchiveDuration => "auto_archive_duration",
193 Self::Available => "available",
194 Self::AvatarHash => "avatar_hash",
195 Self::BannerHash => "banner_hash",
196 Self::Bitrate => "bitrate",
197 Self::ChannelId => "channel_id",
198 Self::Code => "code",
199 Self::Color => "color",
200 Self::CommandId => "command_id",
201 Self::CommunicationDisabledUntil => "communication_disabled_until",
202 Self::Deaf => "deaf",
203 Self::DefaultAutoArchiveDuration => "default_auto_archive_duration",
204 Self::DefaultMessageNotifications => "default_message_notifications",
205 Self::Deny => "deny",
206 Self::Description => "description",
207 Self::DiscoverySplashHash => "discovery_splash_hash",
208 Self::EnableEmoticons => "enable_emoticons",
209 Self::EntityType => "entity_type",
210 Self::ExpireBehavior => "expire_behavior",
211 Self::ExpireGracePeriod => "expire_grace_period",
212 Self::ExplicitContentFilter => "explicit_content_filter",
213 Self::FormatType => "format_type",
214 Self::GuildId => "guild_id",
215 Self::Hoist => "hoist",
216 Self::IconHash => "icon_hash",
217 Self::Id => "id",
218 Self::ImageHash => "image_hash",
219 Self::Invitable => "invitable",
220 Self::InviterId => "inviter_id",
221 Self::Location => "location",
222 Self::Locked => "locked",
223 Self::MaxAge => "max_age",
224 Self::MaxUses => "max_uses",
225 Self::Mentionable => "mentionable",
226 Self::MfaLevel => "mfa_level",
227 Self::Mute => "mute",
228 Self::Name => "name",
229 Self::Nick => "nick",
230 Self::Nsfw => "nsfw",
231 Self::NsfwLevel => "nsfw_level",
232 Self::OwnerId => "owner_id",
233 Self::PermissionOverwrites => "permission_overwrites",
234 Self::Permissions => "permissions",
235 Self::Position => "position",
236 Self::PreferredLocale => "preferred_locale",
237 Self::PrivacyLevel => "privacy_level",
238 Self::PruneDeleteDays => "prune_delete_days",
239 Self::PublicUpdatesChannelId => "public_updates_channel_id",
240 Self::RateLimitPerUser => "rate_limit_per_user",
241 Self::Region => "region",
242 Self::RoleAdded => "$add",
243 Self::RoleRemoved => "$remove",
244 Self::RulesChannelId => "rules_channel_id",
245 Self::SplashHash => "splash_hash",
246 Self::Status => "status",
247 Self::SystemChannelId => "system_channel_id",
248 Self::Tags => "tags",
249 Self::Temporary => "temporary",
250 Self::Topic => "topic",
251 Self::Type => "type",
252 Self::UnicodeEmoji => "unicode_emoji",
253 Self::UserLimit => "user_limit",
254 Self::Uses => "uses",
255 Self::VanityUrlCode => "vanity_url_code",
256 Self::VerificationLevel => "verification_level",
257 Self::WidgetChannelId => "widget_channel_id",
258 Self::WidgetEnabled => "widget_enabled",
259 }
260 }
261}
262
263impl Display for AuditLogChangeKey {
264 fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
265 f.write_str(self.name())
266 }
267}
268
269#[cfg(test)]
270mod tests {
271 use super::AuditLogChangeKey;
272 use serde::{Deserialize, Serialize};
273 use serde_test::Token;
274 use static_assertions::assert_impl_all;
275 use std::{
276 fmt::{Debug, Display},
277 hash::Hash,
278 };
279
280 assert_impl_all!(
281 AuditLogChangeKey: Clone,
282 Copy,
283 Debug,
284 Deserialize<'static>,
285 Display,
286 Eq,
287 Hash,
288 PartialEq,
289 Send,
290 Serialize,
291 Sync
292 );
293
294 #[test]
295 fn name() {
296 assert_eq!("afk_channel_id", AuditLogChangeKey::AfkChannelId.name());
297 assert_eq!("afk_timeout", AuditLogChangeKey::AfkTimeout.name());
298 assert_eq!("allow", AuditLogChangeKey::Allow.name());
299 assert_eq!("application_id", AuditLogChangeKey::ApplicationId.name());
300 assert_eq!("avatar_hash", AuditLogChangeKey::AvatarHash.name());
301 assert_eq!("banner_hash", AuditLogChangeKey::BannerHash.name());
302 assert_eq!("bitrate", AuditLogChangeKey::Bitrate.name());
303 assert_eq!("channel_id", AuditLogChangeKey::ChannelId.name());
304 assert_eq!("code", AuditLogChangeKey::Code.name());
305 assert_eq!("color", AuditLogChangeKey::Color.name());
306 assert_eq!("command_id", AuditLogChangeKey::CommandId.name());
307 assert_eq!(
308 "communication_disabled_until",
309 AuditLogChangeKey::CommunicationDisabledUntil.name()
310 );
311 assert_eq!("deaf", AuditLogChangeKey::Deaf.name());
312 assert_eq!(
313 "default_message_notifications",
314 AuditLogChangeKey::DefaultMessageNotifications.name()
315 );
316 assert_eq!("deny", AuditLogChangeKey::Deny.name());
317 assert_eq!("description", AuditLogChangeKey::Description.name());
318 assert_eq!(
319 "discovery_splash_hash",
320 AuditLogChangeKey::DiscoverySplashHash.name()
321 );
322 assert_eq!(
323 "enable_emoticons",
324 AuditLogChangeKey::EnableEmoticons.name()
325 );
326 assert_eq!("expire_behavior", AuditLogChangeKey::ExpireBehavior.name());
327 assert_eq!(
328 "expire_grace_period",
329 AuditLogChangeKey::ExpireGracePeriod.name()
330 );
331 assert_eq!(
332 "explicit_content_filter",
333 AuditLogChangeKey::ExplicitContentFilter.name()
334 );
335 assert_eq!("hoist", AuditLogChangeKey::Hoist.name());
336 assert_eq!("icon_hash", AuditLogChangeKey::IconHash.name());
337 assert_eq!("id", AuditLogChangeKey::Id.name());
338 assert_eq!("image_hash", AuditLogChangeKey::ImageHash.name());
339 assert_eq!("invitable", AuditLogChangeKey::Invitable.name());
340 assert_eq!("inviter_id", AuditLogChangeKey::InviterId.name());
341 assert_eq!("max_age", AuditLogChangeKey::MaxAge.name());
342 assert_eq!("max_uses", AuditLogChangeKey::MaxUses.name());
343 assert_eq!("mentionable", AuditLogChangeKey::Mentionable.name());
344 assert_eq!("mfa_level", AuditLogChangeKey::MfaLevel.name());
345 assert_eq!("mute", AuditLogChangeKey::Mute.name());
346 assert_eq!("name", AuditLogChangeKey::Name.name());
347 assert_eq!("nick", AuditLogChangeKey::Nick.name());
348 assert_eq!("nsfw_level", AuditLogChangeKey::NsfwLevel.name());
349 assert_eq!("owner_id", AuditLogChangeKey::OwnerId.name());
350 assert_eq!("permissions", AuditLogChangeKey::Permissions.name());
351 assert_eq!("position", AuditLogChangeKey::Position.name());
352 assert_eq!(
353 "preferred_locale",
354 AuditLogChangeKey::PreferredLocale.name()
355 );
356 assert_eq!("privacy_level", AuditLogChangeKey::PrivacyLevel.name());
357 assert_eq!(
358 "prune_delete_days",
359 AuditLogChangeKey::PruneDeleteDays.name()
360 );
361 assert_eq!(
362 "public_updates_channel_id",
363 AuditLogChangeKey::PublicUpdatesChannelId.name()
364 );
365 assert_eq!(
366 "rate_limit_per_user",
367 AuditLogChangeKey::RateLimitPerUser.name()
368 );
369 assert_eq!("$add", AuditLogChangeKey::RoleAdded.name());
370 assert_eq!("$remove", AuditLogChangeKey::RoleRemoved.name());
371 assert_eq!("rules_channel_id", AuditLogChangeKey::RulesChannelId.name());
372 assert_eq!("splash_hash", AuditLogChangeKey::SplashHash.name());
373 assert_eq!(
374 "system_channel_id",
375 AuditLogChangeKey::SystemChannelId.name()
376 );
377 assert_eq!("temporary", AuditLogChangeKey::Temporary.name());
378 assert_eq!("topic", AuditLogChangeKey::Topic.name());
379 assert_eq!("type", AuditLogChangeKey::Type.name());
380 assert_eq!("user_limit", AuditLogChangeKey::UserLimit.name());
381 assert_eq!("uses", AuditLogChangeKey::Uses.name());
382 assert_eq!("vanity_url_code", AuditLogChangeKey::VanityUrlCode.name());
383 assert_eq!(
384 "verification_level",
385 AuditLogChangeKey::VerificationLevel.name()
386 );
387 assert_eq!(
388 "widget_channel_id",
389 AuditLogChangeKey::WidgetChannelId.name()
390 );
391 assert_eq!("widget_enabled", AuditLogChangeKey::WidgetEnabled.name());
392 }
393
394 #[allow(clippy::too_many_lines)]
395 #[test]
396 fn serde() {
397 serde_test::assert_tokens(
398 &AuditLogChangeKey::AfkChannelId,
399 &[Token::UnitVariant {
400 name: "AuditLogChangeKey",
401 variant: "afk_channel_id",
402 }],
403 );
404 serde_test::assert_tokens(
405 &AuditLogChangeKey::AfkTimeout,
406 &[Token::UnitVariant {
407 name: "AuditLogChangeKey",
408 variant: "afk_timeout",
409 }],
410 );
411 serde_test::assert_tokens(
412 &AuditLogChangeKey::Allow,
413 &[Token::UnitVariant {
414 name: "AuditLogChangeKey",
415 variant: "allow",
416 }],
417 );
418 serde_test::assert_tokens(
419 &AuditLogChangeKey::ApplicationId,
420 &[Token::UnitVariant {
421 name: "AuditLogChangeKey",
422 variant: "application_id",
423 }],
424 );
425 serde_test::assert_tokens(
426 &AuditLogChangeKey::AvatarHash,
427 &[Token::UnitVariant {
428 name: "AuditLogChangeKey",
429 variant: "avatar_hash",
430 }],
431 );
432 serde_test::assert_tokens(
433 &AuditLogChangeKey::BannerHash,
434 &[Token::UnitVariant {
435 name: "AuditLogChangeKey",
436 variant: "banner_hash",
437 }],
438 );
439 serde_test::assert_tokens(
440 &AuditLogChangeKey::Bitrate,
441 &[Token::UnitVariant {
442 name: "AuditLogChangeKey",
443 variant: "bitrate",
444 }],
445 );
446 serde_test::assert_tokens(
447 &AuditLogChangeKey::ChannelId,
448 &[Token::UnitVariant {
449 name: "AuditLogChangeKey",
450 variant: "channel_id",
451 }],
452 );
453 serde_test::assert_tokens(
454 &AuditLogChangeKey::Code,
455 &[Token::UnitVariant {
456 name: "AuditLogChangeKey",
457 variant: "code",
458 }],
459 );
460 serde_test::assert_tokens(
461 &AuditLogChangeKey::Color,
462 &[Token::UnitVariant {
463 name: "AuditLogChangeKey",
464 variant: "color",
465 }],
466 );
467 serde_test::assert_tokens(
468 &AuditLogChangeKey::CommandId,
469 &[Token::UnitVariant {
470 name: "AuditLogChangeKey",
471 variant: "command_id",
472 }],
473 );
474 serde_test::assert_tokens(
475 &AuditLogChangeKey::CommunicationDisabledUntil,
476 &[Token::UnitVariant {
477 name: "AuditLogChangeKey",
478 variant: "communication_disabled_until",
479 }],
480 );
481 serde_test::assert_tokens(
482 &AuditLogChangeKey::Deaf,
483 &[Token::UnitVariant {
484 name: "AuditLogChangeKey",
485 variant: "deaf",
486 }],
487 );
488 serde_test::assert_tokens(
489 &AuditLogChangeKey::DefaultMessageNotifications,
490 &[Token::UnitVariant {
491 name: "AuditLogChangeKey",
492 variant: "default_message_notifications",
493 }],
494 );
495 serde_test::assert_tokens(
496 &AuditLogChangeKey::Deny,
497 &[Token::UnitVariant {
498 name: "AuditLogChangeKey",
499 variant: "deny",
500 }],
501 );
502 serde_test::assert_tokens(
503 &AuditLogChangeKey::Description,
504 &[Token::UnitVariant {
505 name: "AuditLogChangeKey",
506 variant: "description",
507 }],
508 );
509 serde_test::assert_tokens(
510 &AuditLogChangeKey::DiscoverySplashHash,
511 &[Token::UnitVariant {
512 name: "AuditLogChangeKey",
513 variant: "discovery_splash_hash",
514 }],
515 );
516 serde_test::assert_tokens(
517 &AuditLogChangeKey::EnableEmoticons,
518 &[Token::UnitVariant {
519 name: "AuditLogChangeKey",
520 variant: "enable_emoticons",
521 }],
522 );
523 serde_test::assert_tokens(
524 &AuditLogChangeKey::ExpireBehavior,
525 &[Token::UnitVariant {
526 name: "AuditLogChangeKey",
527 variant: "expire_behavior",
528 }],
529 );
530 serde_test::assert_tokens(
531 &AuditLogChangeKey::ExpireGracePeriod,
532 &[Token::UnitVariant {
533 name: "AuditLogChangeKey",
534 variant: "expire_grace_period",
535 }],
536 );
537 serde_test::assert_tokens(
538 &AuditLogChangeKey::ExplicitContentFilter,
539 &[Token::UnitVariant {
540 name: "AuditLogChangeKey",
541 variant: "explicit_content_filter",
542 }],
543 );
544 serde_test::assert_tokens(
545 &AuditLogChangeKey::Hoist,
546 &[Token::UnitVariant {
547 name: "AuditLogChangeKey",
548 variant: "hoist",
549 }],
550 );
551 serde_test::assert_tokens(
552 &AuditLogChangeKey::IconHash,
553 &[Token::UnitVariant {
554 name: "AuditLogChangeKey",
555 variant: "icon_hash",
556 }],
557 );
558 serde_test::assert_tokens(
559 &AuditLogChangeKey::Id,
560 &[Token::UnitVariant {
561 name: "AuditLogChangeKey",
562 variant: "id",
563 }],
564 );
565 serde_test::assert_tokens(
566 &AuditLogChangeKey::ImageHash,
567 &[Token::UnitVariant {
568 name: "AuditLogChangeKey",
569 variant: "image_hash",
570 }],
571 );
572 serde_test::assert_tokens(
573 &AuditLogChangeKey::Invitable,
574 &[Token::UnitVariant {
575 name: "AuditLogChangeKey",
576 variant: "invitable",
577 }],
578 );
579 serde_test::assert_tokens(
580 &AuditLogChangeKey::InviterId,
581 &[Token::UnitVariant {
582 name: "AuditLogChangeKey",
583 variant: "inviter_id",
584 }],
585 );
586 serde_test::assert_tokens(
587 &AuditLogChangeKey::MaxAge,
588 &[Token::UnitVariant {
589 name: "AuditLogChangeKey",
590 variant: "max_age",
591 }],
592 );
593 serde_test::assert_tokens(
594 &AuditLogChangeKey::MaxUses,
595 &[Token::UnitVariant {
596 name: "AuditLogChangeKey",
597 variant: "max_uses",
598 }],
599 );
600 serde_test::assert_tokens(
601 &AuditLogChangeKey::Mentionable,
602 &[Token::UnitVariant {
603 name: "AuditLogChangeKey",
604 variant: "mentionable",
605 }],
606 );
607 serde_test::assert_tokens(
608 &AuditLogChangeKey::MfaLevel,
609 &[Token::UnitVariant {
610 name: "AuditLogChangeKey",
611 variant: "mfa_level",
612 }],
613 );
614 serde_test::assert_tokens(
615 &AuditLogChangeKey::Mute,
616 &[Token::UnitVariant {
617 name: "AuditLogChangeKey",
618 variant: "mute",
619 }],
620 );
621 serde_test::assert_tokens(
622 &AuditLogChangeKey::Name,
623 &[Token::UnitVariant {
624 name: "AuditLogChangeKey",
625 variant: "name",
626 }],
627 );
628 serde_test::assert_tokens(
629 &AuditLogChangeKey::Nick,
630 &[Token::UnitVariant {
631 name: "AuditLogChangeKey",
632 variant: "nick",
633 }],
634 );
635 serde_test::assert_tokens(
636 &AuditLogChangeKey::NsfwLevel,
637 &[Token::UnitVariant {
638 name: "AuditLogChangeKey",
639 variant: "nsfw_level",
640 }],
641 );
642 serde_test::assert_tokens(
643 &AuditLogChangeKey::OwnerId,
644 &[Token::UnitVariant {
645 name: "AuditLogChangeKey",
646 variant: "owner_id",
647 }],
648 );
649 serde_test::assert_tokens(
650 &AuditLogChangeKey::Permissions,
651 &[Token::UnitVariant {
652 name: "AuditLogChangeKey",
653 variant: "permissions",
654 }],
655 );
656 serde_test::assert_tokens(
657 &AuditLogChangeKey::Position,
658 &[Token::UnitVariant {
659 name: "AuditLogChangeKey",
660 variant: "position",
661 }],
662 );
663 serde_test::assert_tokens(
664 &AuditLogChangeKey::PreferredLocale,
665 &[Token::UnitVariant {
666 name: "AuditLogChangeKey",
667 variant: "preferred_locale",
668 }],
669 );
670 serde_test::assert_tokens(
671 &AuditLogChangeKey::PrivacyLevel,
672 &[Token::UnitVariant {
673 name: "AuditLogChangeKey",
674 variant: "privacy_level",
675 }],
676 );
677 serde_test::assert_tokens(
678 &AuditLogChangeKey::PruneDeleteDays,
679 &[Token::UnitVariant {
680 name: "AuditLogChangeKey",
681 variant: "prune_delete_days",
682 }],
683 );
684 serde_test::assert_tokens(
685 &AuditLogChangeKey::PublicUpdatesChannelId,
686 &[Token::UnitVariant {
687 name: "AuditLogChangeKey",
688 variant: "public_updates_channel_id",
689 }],
690 );
691 serde_test::assert_tokens(
692 &AuditLogChangeKey::RateLimitPerUser,
693 &[Token::UnitVariant {
694 name: "AuditLogChangeKey",
695 variant: "rate_limit_per_user",
696 }],
697 );
698 serde_test::assert_tokens(
699 &AuditLogChangeKey::RoleAdded,
700 &[Token::UnitVariant {
701 name: "AuditLogChangeKey",
702 variant: "$add",
703 }],
704 );
705 serde_test::assert_tokens(
706 &AuditLogChangeKey::RoleRemoved,
707 &[Token::UnitVariant {
708 name: "AuditLogChangeKey",
709 variant: "$remove",
710 }],
711 );
712 serde_test::assert_tokens(
713 &AuditLogChangeKey::RulesChannelId,
714 &[Token::UnitVariant {
715 name: "AuditLogChangeKey",
716 variant: "rules_channel_id",
717 }],
718 );
719 serde_test::assert_tokens(
720 &AuditLogChangeKey::SplashHash,
721 &[Token::UnitVariant {
722 name: "AuditLogChangeKey",
723 variant: "splash_hash",
724 }],
725 );
726 serde_test::assert_tokens(
727 &AuditLogChangeKey::SystemChannelId,
728 &[Token::UnitVariant {
729 name: "AuditLogChangeKey",
730 variant: "system_channel_id",
731 }],
732 );
733 serde_test::assert_tokens(
734 &AuditLogChangeKey::Temporary,
735 &[Token::UnitVariant {
736 name: "AuditLogChangeKey",
737 variant: "temporary",
738 }],
739 );
740 serde_test::assert_tokens(
741 &AuditLogChangeKey::Topic,
742 &[Token::UnitVariant {
743 name: "AuditLogChangeKey",
744 variant: "topic",
745 }],
746 );
747 serde_test::assert_tokens(
748 &AuditLogChangeKey::Type,
749 &[Token::UnitVariant {
750 name: "AuditLogChangeKey",
751 variant: "type",
752 }],
753 );
754 serde_test::assert_tokens(
755 &AuditLogChangeKey::UserLimit,
756 &[Token::UnitVariant {
757 name: "AuditLogChangeKey",
758 variant: "user_limit",
759 }],
760 );
761 serde_test::assert_tokens(
762 &AuditLogChangeKey::Uses,
763 &[Token::UnitVariant {
764 name: "AuditLogChangeKey",
765 variant: "uses",
766 }],
767 );
768 serde_test::assert_tokens(
769 &AuditLogChangeKey::VanityUrlCode,
770 &[Token::UnitVariant {
771 name: "AuditLogChangeKey",
772 variant: "vanity_url_code",
773 }],
774 );
775 serde_test::assert_tokens(
776 &AuditLogChangeKey::VerificationLevel,
777 &[Token::UnitVariant {
778 name: "AuditLogChangeKey",
779 variant: "verification_level",
780 }],
781 );
782 serde_test::assert_tokens(
783 &AuditLogChangeKey::WidgetChannelId,
784 &[Token::UnitVariant {
785 name: "AuditLogChangeKey",
786 variant: "widget_channel_id",
787 }],
788 );
789 serde_test::assert_tokens(
790 &AuditLogChangeKey::WidgetEnabled,
791 &[Token::UnitVariant {
792 name: "AuditLogChangeKey",
793 variant: "widget_enabled",
794 }],
795 );
796 }
797}