Skip to main content

revolt_models/v0/
server_bans.rs

1use super::{File, MemberCompositeKey, User};
2
3#[cfg(feature = "validator")]
4use validator::Validate;
5
6auto_derived!(
7    /// Server Ban
8    pub struct ServerBan {
9        /// Unique member id
10        #[cfg_attr(feature = "serde", serde(rename = "_id"))]
11        pub id: MemberCompositeKey,
12        /// Reason for ban creation
13        pub reason: Option<String>,
14    }
15
16    /// Information for new server ban
17    #[cfg_attr(feature = "validator", derive(Validate))]
18    pub struct DataBanCreate {
19        /// Ban reason
20        #[cfg_attr(feature = "validator", validate(length(min = 0, max = 1024)))]
21        pub reason: Option<String>,
22        /// Messages to delete in seconds
23        #[cfg_attr(feature = "validator", validate(range(min = 0, max = 604800)))]
24        pub delete_message_seconds: Option<i64>,
25    }
26
27    /// Just enough information to list a ban
28    pub struct BannedUser {
29        /// Id of the banned user
30        #[cfg_attr(feature = "serde", serde(rename = "_id"))]
31        pub id: String,
32        /// Username of the banned user
33        pub username: String,
34        /// Discriminator of the banned user
35        pub discriminator: String,
36        /// Avatar of the banned user
37        pub avatar: Option<File>,
38    }
39
40    /// Ban list result
41    pub struct BanListResult {
42        /// Users objects
43        pub users: Vec<BannedUser>,
44        /// Ban objects
45        pub bans: Vec<ServerBan>,
46    }
47);
48
49impl From<User> for BannedUser {
50    fn from(user: User) -> Self {
51        BannedUser {
52            id: user.id,
53            username: user.username,
54            discriminator: user.discriminator,
55            avatar: user.avatar,
56        }
57    }
58}