From 109199ea451a8b7381f6f1e94377d4cd3b18bd87 Mon Sep 17 00:00:00 2001 From: Gregory Wells Date: Mon, 8 Jun 2026 18:54:31 -0400 Subject: [PATCH] move redis config over to config file --- data/config.example.json | 6 +++++- src/main/config.go | 12 +++++++++--- src/main/main.go | 2 +- src/session/session_manager.go | 6 ++++-- src/store/store_redis.go | 7 ++----- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/data/config.example.json b/data/config.example.json index ee0d5b1..d744464 100644 --- a/data/config.example.json +++ b/data/config.example.json @@ -14,7 +14,11 @@ "server_config": { "port": 8080, "base_url": "https://profile.example.com", - "session_store": "redis" + "session_store": "redis", + "redis_config": { + "redis_url": "redis://localhost:6379/0", + "prefix": "" + } }, "email_config": { "username": "noreply", diff --git a/src/main/config.go b/src/main/config.go index 2c3cf6b..ee624bd 100644 --- a/src/main/config.go +++ b/src/main/config.go @@ -21,10 +21,16 @@ type StyleConfig struct { LogoPath string `json:"logo_path"` } +type RedisConfig struct { + RedisURL string `json:"redis_url"` + Prefix string `json:"prefix"` +} + type WebserverConfig struct { - Port int `json:"port"` - BaseURL string `json:"base_url"` - SessionStore string `json:"session_store"` + Port int `json:"port"` + BaseURL string `json:"base_url"` + SessionStore string `json:"session_store"` + RedisConfigInfo RedisConfig `json:"redis_config"` } type EmailConfig struct { diff --git a/src/main/main.go b/src/main/main.go index 19a02ee..a78e223 100644 --- a/src/main/main.go +++ b/src/main/main.go @@ -232,7 +232,7 @@ func main() { if serverConfig.WebserverConfig.SessionStore == "in_memory" { sessionManager.SetStoreType(session.InMemory) } else if serverConfig.WebserverConfig.SessionStore == "redis" { - sessionManager.SetStoreType(session.Redis) + sessionManager.SetStoreType(session.Redis, serverConfig.WebserverConfig.RedisConfigInfo.RedisURL, serverConfig.WebserverConfig.RedisConfigInfo.Prefix) } else { logging.Warnf("'%s' is an unknown session store type defaulting to in memory", serverConfig.WebserverConfig.SessionStore) sessionManager.SetStoreType(session.InMemory) diff --git a/src/session/session_manager.go b/src/session/session_manager.go index 5037ea5..488118e 100644 --- a/src/session/session_manager.go +++ b/src/session/session_manager.go @@ -33,7 +33,7 @@ func GetSessionManager() *SessionManager { return instance } -func (manager *SessionManager) SetStoreType(storeType StoreType) { +func (manager *SessionManager) SetStoreType(storeType StoreType, params ...any) { logging.Infof("Changing session manager store type") switch storeType { case InMemory: @@ -47,7 +47,9 @@ func (manager *SessionManager) SetStoreType(storeType StoreType) { } case Redis: { - manager.store = store.NewRedisStore[*SessionData]() + url, _ := params[0].(string) + prefix, _ := params[1].(string) + manager.store = store.NewRedisStore[*SessionData](url, prefix) break } } diff --git a/src/store/store_redis.go b/src/store/store_redis.go index 0b8555a..bf09ba5 100644 --- a/src/store/store_redis.go +++ b/src/store/store_redis.go @@ -19,12 +19,9 @@ func (m *RedisStore[Value]) RedisHash(value_to_hash string) string { return m.prefix + HashKey(value_to_hash) } -func NewRedisStore[Value any]() *RedisStore[Value] { +func NewRedisStore[Value any](redis_server string, prefix string) *RedisStore[Value] { logging.Debug("Creating new redis session store") - // this will be replaced with a URL that can be parsed in the config file - redis_server := "redis://localhost:6379/0" - opts, err := redis.ParseURL(redis_server) if err != nil { logging.Errorf("Failed to parse redis url %s", err.Error()) @@ -42,7 +39,7 @@ func NewRedisStore[Value any]() *RedisStore[Value] { store := &RedisStore[Value]{ client: rdb, ctx: ctx, - prefix: "random_string_1", + prefix: prefix, } return store }