tulpje-cache 0.4.0

A redis cache for twilight
Documentation
use twilight_model::gateway::payload::incoming::{
    GuildCreate, GuildDelete, GuildUpdate, UnavailableGuild,
};

use crate::UpdateCache;

impl UpdateCache for GuildCreate {
    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
        match self {
            Self::Available(guild) => cache.cache_guild(guild.clone()).await,
            Self::Unavailable(unavailable) => cache.unavailable_guild(unavailable.id).await,
        }
    }
}

impl UpdateCache for GuildDelete {
    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
        cache.delete_guild(self.id, false).await
    }
}

impl UpdateCache for GuildUpdate {
    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
        cache.update_guild(self).await
    }
}

impl UpdateCache for UnavailableGuild {
    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
        cache.unavailable_guild(self.id).await?;

        Ok(())
    }
}