revolt_database/models/server_bans/
model.rs

1use revolt_result::Result;
2
3use crate::{Database, MemberCompositeKey, Server};
4
5auto_derived!(
6    /// Server Ban
7    pub struct ServerBan {
8        /// Unique member id
9        #[serde(rename = "_id")]
10        pub id: MemberCompositeKey,
11        /// Reason for ban creation
12        pub reason: Option<String>,
13    }
14);
15
16#[allow(clippy::disallowed_methods)]
17impl ServerBan {
18    /// Create ban
19    pub async fn create(
20        db: &Database,
21        server: &Server,
22        user_id: &str,
23        reason: Option<String>,
24    ) -> Result<ServerBan> {
25        let ban = ServerBan {
26            id: MemberCompositeKey {
27                server: server.id.to_string(),
28                user: user_id.to_string(),
29            },
30            reason,
31        };
32
33        db.insert_ban(&ban).await?;
34        Ok(ban)
35    }
36}