@@ -13,6 +13,7 @@ type Config struct {
1313 Database DatabaseConfig
1414 JWT JWTConfig
1515 App AppConfig
16+ Redis RedisConfig
1617}
1718
1819type ServerConfig struct {
@@ -37,6 +38,15 @@ type AppConfig struct {
3738 Version string
3839}
3940
41+ type RedisConfig struct {
42+ Enabled bool
43+ Addr string
44+ Password string
45+ DB int
46+ TLS bool
47+ CacheTTLSeconds int
48+ }
49+
4050func Load () * Config {
4151 if err := godotenv .Load (); err != nil {
4252 log .Printf ("no .env file found or error loading it: %v" , err )
@@ -61,6 +71,14 @@ func Load() *Config {
6171 Name : getEnv ("APP_NAME" , "Forgotten" ),
6272 Version : getEnv ("APP_VERSION" , "1.0.0" ),
6373 },
74+ Redis : RedisConfig {
75+ Enabled : getEnvAsBool ("REDIS_ENABLED" , false ),
76+ Addr : getEnv ("REDIS_ADDR" , "localhost:6379" ),
77+ Password : getEnv ("REDIS_PASSWORD" , "" ),
78+ DB : getEnvAsInt ("REDIS_DB" , 0 ),
79+ TLS : getEnvAsBool ("REDIS_TLS" , false ),
80+ CacheTTLSeconds : getEnvAsInt ("REDIS_CACHE_TTL_SECONDS" , 600 ),
81+ },
6482 }
6583}
6684
@@ -79,4 +97,18 @@ func getEnvAsInt(name string, defaultVal int) int {
7997 log .Printf ("invalid integer value for %s: %s. using default: %d" , name , value , defaultVal )
8098 }
8199 return defaultVal
100+ }
101+
102+ func getEnvAsBool (name string , defaultVal bool ) bool {
103+ if value := os .Getenv (name ); value != "" {
104+ switch value {
105+ case "1" , "true" , "TRUE" , "True" , "yes" , "YES" , "Yes" , "on" , "ON" , "On" :
106+ return true
107+ case "0" , "false" , "FALSE" , "False" , "no" , "NO" , "No" , "off" , "OFF" , "Off" :
108+ return false
109+ default :
110+ log .Printf ("invalid boolean value for %s: %s. using default: %t" , name , value , defaultVal )
111+ }
112+ }
113+ return defaultVal
82114}
0 commit comments