first commit
This commit is contained in:
65
configs/envs.go
Normal file
65
configs/envs.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package configs
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
PublicHost string
|
||||
Port string
|
||||
DBUser string
|
||||
DBPassword string
|
||||
DBAddress string
|
||||
DBName string
|
||||
JWTSecret string
|
||||
JWTExpirationInSeconds int64
|
||||
GoogleClientID string
|
||||
GoogleClientSecret string
|
||||
SessionKey string
|
||||
}
|
||||
|
||||
var Envs = initConfig()
|
||||
|
||||
func initConfig() Config {
|
||||
godotenv.Load()
|
||||
|
||||
return Config{
|
||||
PublicHost: getEnv("PUBLIC_HOST", "http://localhost"),
|
||||
Port: getEnv("PORT", "8080"),
|
||||
DBUser: getEnv("DB_USER", "root"),
|
||||
DBPassword: getEnv("DB_PASSWORD", "mypassword"),
|
||||
DBAddress: fmt.Sprintf("%s:%s", getEnv("DB_HOST", "127.0.0.1"), getEnv("DB_PORT", "3306")),
|
||||
DBName: getEnv("DB_NAME", "ecom"),
|
||||
JWTSecret: getEnv("JWT_SECRET", "not-so-secret-now-is-it?"),
|
||||
JWTExpirationInSeconds: getEnvAsInt("JWT_EXPIRATION_IN_SECONDS", 3600*24*7),
|
||||
GoogleClientID: getEnv("GOOGLE_CLIENT_ID", "notfound"),
|
||||
GoogleClientSecret: getEnv("GOOGLE_CLIENT_SECRET", "nosecret"),
|
||||
SessionKey: getEnv("SESSION_KEY", "sessionkey"),
|
||||
}
|
||||
}
|
||||
|
||||
// Gets the env by key or fallbacks
|
||||
func getEnv(key, fallback string) string {
|
||||
if value, ok := os.LookupEnv(key); ok {
|
||||
return value
|
||||
}
|
||||
|
||||
return fallback
|
||||
}
|
||||
|
||||
func getEnvAsInt(key string, fallback int64) int64 {
|
||||
if value, ok := os.LookupEnv(key); ok {
|
||||
i, err := strconv.ParseInt(value, 10, 64)
|
||||
if err != nil {
|
||||
return fallback
|
||||
}
|
||||
|
||||
return i
|
||||
}
|
||||
|
||||
return fallback
|
||||
}
|
||||
Reference in New Issue
Block a user