tulpje_cache/event/
guild.rs

1use twilight_model::gateway::payload::incoming::{
2    GuildCreate, GuildDelete, GuildUpdate, UnavailableGuild,
3};
4
5use crate::UpdateCache;
6
7impl UpdateCache for GuildCreate {
8    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
9        match self {
10            Self::Available(guild) => cache.cache_guild(guild.clone()).await,
11            Self::Unavailable(unavailable) => cache.unavailable_guild(unavailable.id).await,
12        }
13    }
14}
15
16impl UpdateCache for GuildDelete {
17    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
18        cache.delete_guild(self.id, false).await
19    }
20}
21
22impl UpdateCache for GuildUpdate {
23    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
24        cache.update_guild(self).await
25    }
26}
27
28impl UpdateCache for UnavailableGuild {
29    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
30        cache.unavailable_guild(self.id).await?;
31
32        Ok(())
33    }
34}