feat: add caarlos0/env package for environment variable management and refactor appConfig structure

This commit is contained in:
2026-04-21 10:41:38 -05:00
parent c5a18f6d95
commit f2e6edd8fa
3 changed files with 24 additions and 30 deletions

View File

@@ -1,49 +1,40 @@
package config
import (
"os"
"strings"
"github.com/caarlos0/env/v11"
"github.com/joho/godotenv"
log "github.com/sirupsen/logrus"
)
type appConfig struct {
SourceDbUrl string
TargetDbUrl string
LogLevel string
type AzureConfig struct {
AccountName string `env:"AZ_ACCOUNT_NAME"`
Container string `env:"AZ_CONTAINER"`
AccountKey string `env:"AZ_ACCOUNT_KEY"`
UseHTTPS bool `env:"AZ_USE_HTTPS" envDefault:"true"`
ServiceURL string `env:"AZ_SERVICE_URL"`
Prefix string `env:"AZ_PREFIX"`
Enabled bool `env:"AZ_STORAGE_ENABLED"`
}
func loadEnv() {
err := godotenv.Load()
if err != nil {
log.Warn("Warning: could not load .env file")
}
type appConfig struct {
SourceDbUrl string `env:"SOURCE_DB_URL,required"`
TargetDbUrl string `env:"TARGET_DB_URL,required"`
LogLevel string `env:"LOG_LEVEL" envDefault:"INFO"`
Azure AzureConfig
}
func getAppConfig() appConfig {
loadEnv()
sourceDbUrl := os.Getenv("SOURCE_DB_URL")
if sourceDbUrl == "" {
log.Fatal("SOURCE_DB_URL environment variable not set")
if err := godotenv.Load(); err != nil {
log.Warn("Could not load .env file")
}
targetDbUrl := os.Getenv("TARGET_DB_URL")
if targetDbUrl == "" {
log.Fatal("TARGET_DB_URL environment variable not set")
cfg := appConfig{}
if err := env.Parse(&cfg); err != nil {
log.Fatalf("Error al cargar variables de entorno: %v", err)
}
logLevel := strings.ToUpper(os.Getenv("LOG_LEVEL"))
if logLevel == "" {
logLevel = "INFO"
}
return appConfig{
SourceDbUrl: sourceDbUrl,
TargetDbUrl: targetDbUrl,
LogLevel: logLevel,
}
return cfg
}
var App appConfig = getAppConfig()