@@ -15,7 +15,7 @@ type Config struct {
1515 JWTSecret string `json:"jwt_secret"`
1616}
1717
18- func LoadConfig (file string ) * Config {
18+ func loadConfigFromFile (file string ) * Config {
1919 data , err := os .ReadFile (file )
2020 if err != nil {
2121 log .Fatal ("Failed to read config file" , err )
@@ -29,3 +29,32 @@ func LoadConfig(file string) *Config {
2929
3030 return & config
3131}
32+
33+ func getRequiredEnv (name string ) string {
34+ env := os .Getenv (name )
35+ if len (env ) < 1 {
36+ log .Fatal ("Missing env variable" , name )
37+ }
38+ return env
39+ }
40+
41+ func loadConfigFromEnv () * Config {
42+ config := & Config {
43+ PGConnectionString : getRequiredEnv ("PG_CONNECTION_STRING" ),
44+ SpotifyClientId : getRequiredEnv ("SPOTIFY_CLIENT_ID" ),
45+ SpotifyClientSecret : getRequiredEnv ("SPOTIFY_CLIENT_SECRET" ),
46+ ServiceUrl : getRequiredEnv ("SERVICE_URL" ),
47+ DiscogsAPIKey : getRequiredEnv ("DISCOGS_API_KEY" ),
48+ JWTSecret : getRequiredEnv ("JWT_SECRET" ),
49+ }
50+
51+ return config
52+ }
53+
54+ func LoadConfig (file string ) * Config {
55+ if _ , err := os .Stat (file ); err == nil {
56+ return loadConfigFromFile (file )
57+ } else {
58+ return loadConfigFromEnv ()
59+ }
60+ }
0 commit comments