From ac0f6292ed3ada7ee4bcc9db98f3986458090863 Mon Sep 17 00:00:00 2001 From: Tom Bloor Date: Sun, 21 Apr 2024 14:45:32 +0100 Subject: [PATCH] fix caching issue --- src/avatar_cache.rs | 26 ++++++++++++++++++++++---- src/main.rs | 5 +++-- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/avatar_cache.rs b/src/avatar_cache.rs index c11af87..81f2454 100644 --- a/src/avatar_cache.rs +++ b/src/avatar_cache.rs @@ -1,4 +1,4 @@ -use redis::{Client, Commands, RedisResult}; +use redis::{Client, Commands, ErrorKind, RedisResult}; use crate::config::RedisConfig; use crate::user_data::UserData; @@ -25,11 +25,29 @@ impl AvatarCache { pub fn get_cache_by_name(&self, name: &str) -> RedisResult> { let mut con = self.redis.get_connection()?; - match con.hgetall(UserData::redis_id_from_str(name)) { + let id: String = match con.get(UserData::redis_name_from_str(name)) { + Ok(v) => v, + Err(e) => { + return if e.kind() == ErrorKind::TypeError { + // No cache for name + Ok(None) + } else { + // Something else went wrong + Err(e) + } + } + }; + + match con.hgetall(UserData::redis_id_from_str(&id)) { Ok(v) => Ok(Some(v)), Err(e) => { - dbg!(e); - Ok(None) + if e.kind() == ErrorKind::TypeError { + // No cache for id + Ok(None) + } else { + // Something else went wrong + Err(e) + } }, } } diff --git a/src/main.rs b/src/main.rs index 0c37a03..56029fc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,8 +26,9 @@ async fn main() -> Result<(), Box> { } None => { println!("Cache miss for {}", target); - let u = fetch.get_user_by_name(target).await?; - dbg!(u); + if let Some(u) = fetch.get_user_by_name(target).await? { + cache.set_cache_data(&u)?; + } } }