config reporter try 1
This commit is contained in:
		
							parent
							
								
									c0534ede1b
								
							
						
					
					
						commit
						16dbdc6c4a
					
				| @ -3,11 +3,12 @@ package config | ||||
| import ( | ||||
| 	"strings" | ||||
| 
 | ||||
| 	"git.defalsify.org/vise.git/logging" | ||||
| 	"git.grassecon.net/grassrootseconomics/visedriver/env" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	defaultLanguage		   = "eng" | ||||
| 	defaultLanguage = "eng" | ||||
| 	languages []string | ||||
| ) | ||||
| 
 | ||||
| @ -21,7 +22,7 @@ func setLanguage() error { | ||||
| 	defaultLanguage = env.GetEnv("DEFAULT_LANGUAGE", defaultLanguage) | ||||
| 	languages = strings.Split(env.GetEnv("LANGUAGES", defaultLanguage), ",") | ||||
| 	haveDefaultLanguage := false | ||||
| 	for i, v := range(languages) { | ||||
| 	for i, v := range languages { | ||||
| 		languages[i] = strings.ReplaceAll(v, " ", "") | ||||
| 		if languages[i] == defaultLanguage { | ||||
| 			haveDefaultLanguage = true | ||||
| @ -35,8 +36,6 @@ func setLanguage() error { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| func setConn() error { | ||||
| 	DbConn = env.GetEnv("DB_CONN", "") | ||||
| 	return nil | ||||
| @ -44,16 +43,25 @@ func setConn() error { | ||||
| 
 | ||||
| // LoadConfig initializes the configuration values after environment variables are loaded.
 | ||||
| func LoadConfig() error { | ||||
| 	err := setConn() | ||||
| 	if err != nil { | ||||
| 	if err := setLanguage(); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	err = setLanguage() | ||||
| 	if err != nil { | ||||
| 	if err := setConn(); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	DefaultLanguage = defaultLanguage | ||||
| 	Languages = languages | ||||
| 
 | ||||
| 
 | ||||
| 	// Create and use reporter
 | ||||
| 	logger := logging.NewVanilla().WithDomain("config") | ||||
| 	reporter := NewReporter(logger) | ||||
| 	 | ||||
| 	reporter.AddValue("CUSTOM_SETTING", func() string { | ||||
| 		return env.GetEnv("CUSTOM_SETTING", "default") | ||||
| 	}, false) | ||||
| 	 | ||||
| 	reporter.Report("INFO") | ||||
| 	 | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
							
								
								
									
										75
									
								
								config/reporter.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								config/reporter.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | ||||
| //go:build configreport
 | ||||
| 
 | ||||
| package config | ||||
| 
 | ||||
| import ( | ||||
|     "git.defalsify.org/vise.git/logging" | ||||
|     "git.grassecon.net/grassrootseconomics/visedriver/env" | ||||
| ) | ||||
| 
 | ||||
| // ConfigValue represents a configuration key-value pair
 | ||||
| type ConfigValue struct { | ||||
|     Key          string | ||||
|     ValueFunc    func() string | ||||
|     Sensitive    bool | ||||
| } | ||||
| 
 | ||||
| // Reporter handles configuration reporting
 | ||||
| type Reporter struct { | ||||
|     values []ConfigValue | ||||
|     logger logging.Vanilla | ||||
| } | ||||
| 
 | ||||
| func NewReporter(logger logging.Vanilla) *Reporter { | ||||
|     return &Reporter{ | ||||
|         values: defaultConfigValues(), | ||||
|         logger: logger, | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| func defaultConfigValues() []ConfigValue { | ||||
|     return []ConfigValue{ | ||||
|         {"HOST", func() string { return env.GetEnv("HOST", "127.0.0.1") }, false}, | ||||
|         {"PORT", func() string { return env.GetEnv("PORT", "7123") }, false}, | ||||
|         {"AT_ENDPOINT", func() string { return env.GetEnv("AT_ENDPOINT", "/ussd/africastalking") }, false}, | ||||
|         {"DB_CONN", func() string { return env.GetEnv("DB_CONN", "") }, true}, | ||||
|         {"DB_TIMEZONE", func() string { return env.GetEnv("DB_TIMEZONE", "") }, false}, | ||||
|         {"DB_SCHEMA", func() string { return env.GetEnv("DB_SCHEMA", "") }, false}, | ||||
|         {"CUSTODIAL_URL_BASE", func() string { return env.GetEnv("CUSTODIAL_URL_BASE", "") }, false}, | ||||
|         {"BEARER_TOKEN", func() string { return env.GetEnv("BEARER_TOKEN", "") }, true}, | ||||
|         {"DATA_URL_BASE", func() string { return env.GetEnv("DATA_URL_BASE", "") }, false}, | ||||
|         {"DEFAULT_LANGUAGE", func() string { return env.GetEnv("DEFAULT_LANGUAGE", "eng") }, false}, | ||||
|         {"LANGUAGES", func() string { return env.GetEnv("LANGUAGES", "eng") }, false}, | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| func (r *Reporter) AddValue(key string, valueFn func() string, sensitive bool) { | ||||
|     r.values = append(r.values, ConfigValue{ | ||||
|         Key:       key, | ||||
|         ValueFunc: valueFn, | ||||
|         Sensitive: sensitive, | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // Report outputs all configuration values at the specified log level
 | ||||
| func (r *Reporter) Report(level string) { | ||||
|     r.logger.Debugf("Configuration Report:") | ||||
|     for _, cv := range r.values { | ||||
|         value := cv.ValueFunc() | ||||
|         if cv.Sensitive { | ||||
|             value = "****" | ||||
|         } | ||||
|         switch level { | ||||
|         case "DEBUG": | ||||
|             r.logger.Debugf("%s: %s", cv.Key, value) | ||||
|         case "INFO": | ||||
|             r.logger.Infof("%s: %s", cv.Key, value) | ||||
|         case "WARN": | ||||
|             r.logger.Warnf("%s: %s", cv.Key, value) | ||||
|         case "ERROR": | ||||
|             r.logger.Errorf("%s: %s", cv.Key, value) | ||||
|         default: | ||||
|             r.logger.Infof("%s: %s", cv.Key, value) | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										17
									
								
								config/reporter_noop.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								config/reporter_noop.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | ||||
| //go:build !configreport
 | ||||
| 
 | ||||
| package config | ||||
| 
 | ||||
| import ( | ||||
| 	"git.defalsify.org/vise.git/logging" | ||||
| ) | ||||
| 
 | ||||
| type Reporter struct{} | ||||
| 
 | ||||
| func NewReporter(logger logging.Vanilla) *Reporter { | ||||
| 	return &Reporter{} | ||||
| } | ||||
| 
 | ||||
| func (r *Reporter) AddValue(key string, valueFn func() string, sensitive bool) {} | ||||
| 
 | ||||
| func (r *Reporter) Report(level string) {} | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user