tulpje_cache/event/
guild_scheduled_event.rs1use twilight_model::gateway::payload::incoming::{
2 GuildScheduledEventCreate, GuildScheduledEventDelete, GuildScheduledEventUpdate,
3 GuildScheduledEventUserAdd, GuildScheduledEventUserRemove,
4};
5
6use crate::{Error, UpdateCache};
7
8impl UpdateCache for GuildScheduledEventCreate {
9 async fn update(&self, cache: &crate::Cache) -> Result<(), Error> {
10 cache
11 .cache_guild_scheduled_event(self.guild_id, &self.0)
12 .await
13 }
14}
15
16impl UpdateCache for GuildScheduledEventDelete {
17 async fn update(&self, cache: &crate::Cache) -> Result<(), Error> {
18 cache.scheduled_events.remove(&self.id).await?;
19 cache
20 .guild_scheduled_events
21 .remove(&self.guild_id, &self.id)
22 .await?;
23
24 Ok(())
25 }
26}
27
28impl UpdateCache for GuildScheduledEventUpdate {
29 async fn update(&self, cache: &crate::Cache) -> Result<(), Error> {
30 cache
31 .cache_guild_scheduled_event(self.guild_id, &self.0)
32 .await
33 }
34}
35
36impl UpdateCache for GuildScheduledEventUserAdd {
37 async fn update(&self, cache: &crate::Cache) -> Result<(), Error> {
38 if let Some(mut event) = cache
39 .scheduled_events
40 .get(&self.guild_scheduled_event_id)
41 .await?
42 {
43 event.user_count = event.user_count.map(|count| count.saturating_add(1));
44 cache
45 .scheduled_events
46 .insert(&self.guild_scheduled_event_id, &event)
47 .await?;
48 }
49
50 Ok(())
51 }
52}
53
54impl UpdateCache for GuildScheduledEventUserRemove {
55 async fn update(&self, cache: &crate::Cache) -> Result<(), Error> {
56 if let Some(mut event) = cache
57 .scheduled_events
58 .get(&self.guild_scheduled_event_id)
59 .await?
60 {
61 event.user_count = event.user_count.map(|count| count.saturating_sub(1));
62 cache
63 .scheduled_events
64 .insert(&self.guild_scheduled_event_id, &event)
65 .await?;
66 }
67
68 Ok(())
69 }
70}