revolt_database/models/ratelimit_events/
model.rs

1use std::fmt;
2
3use revolt_result::Result;
4use ulid::Ulid;
5
6use crate::Database;
7
8auto_derived!(
9    /// Ratelimit Event
10    pub struct RatelimitEvent {
11        /// Id
12        #[serde(rename = "_id")]
13        pub id: String,
14        /// Relevant Object Id
15        pub target_id: String,
16        /// Type of event
17        pub event_type: RatelimitEventType,
18    }
19
20    /// Event type
21    pub enum RatelimitEventType {
22        DiscriminatorChange,
23    }
24);
25
26impl fmt::Display for RatelimitEventType {
27    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
28        fmt::Debug::fmt(self, f)
29    }
30}
31
32#[allow(clippy::disallowed_methods)]
33impl RatelimitEvent {
34    /// Create ratelimit event
35    pub async fn create(
36        db: &Database,
37        target_id: String,
38        event_type: RatelimitEventType,
39    ) -> Result<()> {
40        db.insert_ratelimit_event(&RatelimitEvent {
41            id: Ulid::new().to_string(),
42            target_id,
43            event_type,
44        })
45        .await
46    }
47}