tulpje-cache 0.4.0

A redis cache for twilight
Documentation
use twilight_model::{
    guild::GuildIntegration,
    id::{
        Id,
        marker::{GuildMarker, IntegrationMarker},
    },
};

use crate::{Cache, Error, GuildResource};

pub use twilight_model::guild::GuildIntegration as CachedGuildIntegration;

impl Cache {
    pub(crate) async fn cache_integration(
        &self,
        guild_id: Id<GuildMarker>,
        integration: &GuildIntegration,
    ) -> Result<(), Error> {
        self.guild_integrations
            .insert(&guild_id, &integration.id)
            .await?;

        self.integrations
            .insert(
                &(guild_id, integration.id),
                &GuildResource {
                    guild_id,
                    value: integration.clone(),
                },
            )
            .await?;

        Ok(())
    }

    pub(crate) async fn delete_integration(
        &self,
        guild_id: Id<GuildMarker>,
        integration_id: Id<IntegrationMarker>,
    ) -> Result<(), Error> {
        self.integrations
            .remove(&(guild_id, integration_id))
            .await?;

        self.guild_integrations
            .remove(&guild_id, &integration_id)
            .await?;

        Ok(())
    }
}