diff --git a/cmd/validator/main.go b/cmd/validator/main.go index 8c866dd..b2cd104 100644 --- a/cmd/validator/main.go +++ b/cmd/validator/main.go @@ -4,16 +4,13 @@ import ( "bytes" "context" "fmt" - "gitea.pena/PenaSide/common/mongo" "gitea.pena/PenaSide/common/validate" "gitea.pena/PenaSide/heruvym/internal/initialize" minioDal "gitea.pena/PenaSide/heruvym/internal/repository/minio" + "github.com/caarlos0/env/v8" "github.com/minio/minio-go/v7" "github.com/pioz/faker" "log" - "os" - "strconv" - "strings" ) func main() { @@ -56,49 +53,14 @@ func main() { } func loadConfig() (initialize.Config, error) { - config := initialize.Config{ - ExternalCfg: initialize.ExternalCfg{ - Database: mongo.Configuration{ - URL: os.Getenv("MONGO_URL"), - DatabaseName: os.Getenv("MONGO_DB_NAME"), - }, - }, - IsProd: envToBool(os.Getenv("IS_PROD")), - S3Endpoint: os.Getenv("S3_ENDPOINT"), - S3AccessKey: os.Getenv("S3_ACCESS_KEY"), - S3SecretKey: os.Getenv("S3_SECRET_KEY"), - S3Token: os.Getenv("S3_TOKEN"), - TelegramToken: os.Getenv("TELEGRAM_TOKEN"), - RedisHost: os.Getenv("REDIS_HOST"), - RedisPassword: os.Getenv("REDIS_PASSWORD"), - RedisDB: int(envToInt64(os.Getenv("REDIS_DB"))), - TelegramChannelID: envToInt64(os.Getenv("TELEGRAM_CHANNEL_ID")), - ClientHttpUrl: os.Getenv("CLIENT_HTTP_URL"), - AdminHttpUrl: os.Getenv("ADMIN_HTTP_URL"), + var config initialize.Config + if err := env.Parse(&config); err != nil { + log.Fatalf("failed to parse environment variables: %v", err) } return config, nil } -func envToInt64(str string) int64 { - n, err := strconv.ParseInt(str, 10, 64) - if err != nil { - panic(err) - } - return n -} - -func envToBool(str string) bool { - switch strings.ToLower(strings.TrimSpace(str)) { - case "1", "true": - return true - case "0", "false": - return false - default: - panic(fmt.Sprintf("invalid boolean value: %s", str)) - } -} - func validateRedis(cfg initialize.Config) error { if cfg.RedisHost == "" { return fmt.Errorf("redis host is empty")