summaryrefslogtreecommitdiff
path: root/src/storage/mod.rs
diff options
context:
space:
mode:
authorseth <[email protected]>2023-12-15 02:15:56 -0500
committerseth <[email protected]>2023-12-15 16:41:13 -0500
commit2ee6985ee62036afe8c1adc76849ffaf42a08bb8 (patch)
tree6a3bd578c738c93d5f4dda9132f7ed25ca00c619 /src/storage/mod.rs
parentcb81c0a8f4cc33d16ef6c45ae951ae0b926e936f (diff)
storage: remove guild settings from index on bot leave
Diffstat (limited to 'src/storage/mod.rs')
-rw-r--r--src/storage/mod.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/storage/mod.rs b/src/storage/mod.rs
index 0947120..dc76db4 100644
--- a/src/storage/mod.rs
+++ b/src/storage/mod.rs
@@ -111,6 +111,20 @@ impl Storage {
Ok(mems)
}
+ async fn remove_from_index<'a>(
+ &self,
+ key: &str,
+ member: impl ToRedisArgs + Debug + Send + Sync + 'a,
+ ) -> Result<()> {
+ let index = format!("{key}:index");
+ debug!("Removing member {member:#?} from index {index}");
+
+ let mut con = self.client.get_async_connection().await?;
+ con.srem(key, member).await?;
+
+ Ok(())
+ }
+
// guild settings
pub async fn create_guild_settings(&self, settings: Settings) -> Result<()> {
@@ -135,7 +149,9 @@ impl Storage {
pub async fn delete_guild_settings(&self, guild_id: &GuildId) -> Result<()> {
let key = format!("{SETTINGS_KEY}:{guild_id}");
+
self.delete_key(&key).await?;
+ self.remove_from_index(&key, guild_id.as_u64()).await?;
Ok(())
}