From 8a38bdd54b3ade4b08c9f826fd805be437cadf91 Mon Sep 17 00:00:00 2001
From: Johan de Klerk <johan@shiplogic.com>
Date: Wed, 29 Nov 2023 11:24:32 +0200
Subject: [PATCH] Connect to redis client

---
 redis/redis.go | 43 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

diff --git a/redis/redis.go b/redis/redis.go
index 3b9900f..b5c392b 100644
--- a/redis/redis.go
+++ b/redis/redis.go
@@ -5,6 +5,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"math"
+	"os"
 	"strings"
 	"time"
 
@@ -16,13 +17,53 @@ import (
 	"github.com/go-redis/redis/v8"
 )
 
-var ctx = context.Background()
+var (
+	ctx         = context.Background()
+	redisClient *ClientWithHelpers
+)
 
 type ClientWithHelpers struct {
 	Client    *redis.Client
 	Available bool
 }
 
+func GetRedisClient(isDebug bool) *ClientWithHelpers {
+	if redisClient != nil && redisClient.IsConnected() {
+		return redisClient
+	}
+	redisClient = connectToRedis(isDebug)
+	return redisClient
+}
+
+func connectToRedis(isDebug bool) *ClientWithHelpers {
+	if os.Getenv("REDIS_HOST") != "false" {
+
+		host := os.Getenv("REDIS_HOST")
+		port := os.Getenv("REDIS_PORT")
+
+		if isDebug {
+			env := os.Getenv("ENVIRONMENT")
+			switch env {
+			case "dev":
+				port = "6380"
+			case "stage":
+				port = "6381"
+			case "sandbox", "qa":
+				port = "6382"
+			case "prod":
+				port = "6383"
+			}
+		}
+
+		return NewClient(host + ":" + port)
+	}
+
+	return &ClientWithHelpers{
+		Client:    nil,
+		Available: false,
+	}
+}
+
 func NewClient(addr string) *ClientWithHelpers {
 	return &ClientWithHelpers{
 		Client: redis.NewClient(&redis.Options{
-- 
GitLab