tulpje_cache/models/
channel.rs

1use twilight_model::{
2    channel::Channel,
3    id::{marker::ChannelMarker, Id},
4};
5
6use crate::{Cache, Error};
7
8pub use twilight_model::channel::Channel as CachedChannel;
9
10impl Cache {
11    pub(crate) async fn cache_channels(
12        &self,
13        channels: impl IntoIterator<Item = Channel>,
14    ) -> Result<(), Error> {
15        for channel in channels {
16            self.cache_channel(channel).await?;
17        }
18
19        Ok(())
20    }
21
22    pub(crate) async fn cache_channel(&self, channel: Channel) -> Result<(), Error> {
23        if let Some(guild_id) = channel.guild_id {
24            self.guild_channels.insert(&guild_id, &channel.id).await?;
25        }
26
27        self.channels.insert(&channel.id, &channel).await?;
28        Ok(())
29    }
30
31    pub(crate) async fn delete_channel(&self, channel_id: Id<ChannelMarker>) -> Result<(), Error> {
32        if let Some(channel) = self.channels.get(&channel_id).await? {
33            if let Some(guild_id) = channel.guild_id {
34                self.guild_channels.remove(&guild_id, &channel.id).await?;
35            }
36        }
37
38        self.channels.remove(&channel_id).await?;
39        Ok(())
40    }
41}