tulpje-cache 0.4.0

A redis cache for twilight
Documentation
use twilight_model::gateway::payload::incoming::{
    ChannelCreate, ChannelDelete, ChannelPinsUpdate, ChannelUpdate,
};

use crate::UpdateCache;

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

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

impl UpdateCache for ChannelPinsUpdate {
    async fn update(&self, cache: &crate::Cache) -> Result<(), crate::Error> {
        if let Some(mut channel) = cache.channels.get(&self.channel_id).await? {
            channel.last_pin_timestamp = self.last_pin_timestamp;
            cache.channels.insert(&channel.id, &channel).await?;
        }

        Ok(())
    }
}

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