From 9d466ddab01412fe09ce3dfd0b3c1d23527211cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Franc=C3=A9=20Wilke?= <francewilke@gmail.com>
Date: Wed, 29 Nov 2023 11:57:43 +0200
Subject: [PATCH] Add Redis function GetObjectByKey

---
 redis/redis.go | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/redis/redis.go b/redis/redis.go
index b5c392b..86958ed 100644
--- a/redis/redis.go
+++ b/redis/redis.go
@@ -177,6 +177,27 @@ func (r ClientWithHelpers) SetObjectByKeyIndefinitely(key string, object interfa
 
 }
 
+func GetObjectByKey[T any](redisClient *ClientWithHelpers, key string, object T) *T {
+	// Make sure we have a Redis client, and it is connected
+	if redisClient == nil || !redisClient.IsConnected() {
+		return nil
+	}
+
+	// Get the object from Redis
+	jsonString := redisClient.GetValueByKey(key)
+	if jsonString == "" {
+		return nil
+	}
+
+	// Now unmarshal
+	err := json.Unmarshal([]byte(jsonString), &object)
+	if err != nil {
+		return nil
+	}
+
+	return &object
+}
+
 func (r ClientWithHelpers) GetValueByKey(key string) string {
 	if !r.IsConnected() {
 		return ""
-- 
GitLab