From e77930c8dba9d41413e60d3eac57c25969ea34d8 Mon Sep 17 00:00:00 2001 From: Natsu Kagami Date: Mon, 5 Aug 2024 13:41:08 +0200 Subject: [PATCH] Properly implement member cache --- youmubot-prelude/src/member_cache.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/youmubot-prelude/src/member_cache.rs b/youmubot-prelude/src/member_cache.rs index 926d29b..2fc1f04 100644 --- a/youmubot-prelude/src/member_cache.rs +++ b/youmubot-prelude/src/member_cache.rs @@ -88,11 +88,11 @@ impl MemberCache { ) -> crate::Result> { let now = Utc::now(); let mut map = self.per_guild.lock().await; - let entry = map.entry(guild_id); + let entry = map.get(&guild_id); // Check cache - if let Entry::Occupied(oe) = &entry { - if oe.get().timeout > now { - return match &oe.get().value { + if let Some(oe) = &entry { + if oe.timeout > now { + return match &oe.value { Some(v) => Ok(v.clone()), None => bail!("guild members for {} unavailable", guild_id), }; @@ -105,17 +105,18 @@ impl MemberCache { .await .ok() .map(|v| v.into()); - match &entry - .or_insert(Expiring::new( + map.insert( + guild_id, + Expiring::new( members.clone(), now + chrono::Duration::seconds(if members.is_some() { VALID_CACHE_SECONDS } else { INVALID_CACHE_SECONDS }), - )) - .value - { + ), + ); + match members { Some(v) => Ok(v.clone()), None => bail!("guild members for {} unavailable", guild_id), }