tulpje_cache/models/
channel.rs1use twilight_model::{
2 channel::Channel,
3 id::{Id, marker::ChannelMarker},
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 && let Some(guild_id) = channel.guild_id
34 {
35 self.guild_channels.remove(&guild_id, &channel.id).await?;
36 }
37
38 self.channels.remove(&channel_id).await?;
39 Ok(())
40 }
41}