tulpje_cache/event/
channel.rs

1use twilight_model::gateway::payload::incoming::{
2    ChannelCreate, ChannelDelete, ChannelPinsUpdate, ChannelUpdate,
3};
4
5use crate::UpdateCache;
6
7impl UpdateCache for ChannelCreate {
8    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
9        cache.cache_channel(self.0.clone()).await
10    }
11}
12
13impl UpdateCache for ChannelDelete {
14    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
15        cache.delete_channel(self.id).await
16    }
17}
18
19impl UpdateCache for ChannelPinsUpdate {
20    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
21        if let Some(mut channel) = cache.channels.get(&self.channel_id).await? {
22            channel.last_pin_timestamp = self.last_pin_timestamp;
23            cache.channels.insert(&channel.id, &channel).await?;
24        }
25
26        Ok(())
27    }
28}
29
30impl UpdateCache for ChannelUpdate {
31    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
32        cache.cache_channel(self.0.clone()).await
33    }
34}