package initialize import ( "github.com/caarlos0/env/v8" "github.com/joho/godotenv" "log" ) type Config struct { AppName string `env:"APP_NAME" envDefault:"codeword"` HTTPHost string `env:"HTTP_HOST" envDefault:"localhost"` HTTPPort string `env:"HTTP_PORT" envDefault:"3000"` MongoHost string `env:"MONGO_HOST" envDefault:"127.0.0.1"` MongoPort string `env:"MONGO_PORT" envDefault:"27020"` MongoUser string `env:"MONGO_USER" envDefault:"test"` MongoPassword string `env:"MONGO_PASSWORD" envDefault:"test"` MongoDatabase string `env:"MONGO_DB" envDefault:"admin"` MongoAuth string `env:"MONGO_AUTH" envDefault:"admin"` PublicCurveKey string `env:"PUBLIC_CURVE_KEY"` PrivateCurveKey string `env:"PRIVATE_CURVE_KEY"` SignSecret string `env:"SIGN_SECRET"` RedisAddr string `env:"REDIS_ADDR" envDefault:"localhost:6379"` RedisPassword string `env:"REDIS_PASS" envDefault:"admin"` RedisDB int `env:"REDIS_DB" envDefault:"2"` SmtpApiUrl string `env:"SMTP_API_URL"` SmtpHost string `env:"SMTP_HOST"` SmtpPort string `env:"SMTP_PORT"` SmtpUsername string `env:"SMTP_UNAME"` SmtpPassword string `env:"SMTP_PASS"` SmtpApiKey string `env:"SMTP_API_KEY"` SmtpSender string `env:"SMTP_SENDER"` DefaultRedirectionURL string `env:"DEFAULT_REDIRECTION_URL"` AuthURL string `env:"AUTH_EXCHANGE_URL"` KafkaBrokers string `env:"KAFKA_BROKERS"` KafkaTopic string `env:"KAFKA_TOPIC_TARIFF"` DiscountServiceAddress string `env:"DISCOUNT_ADDRESS"` RecoveryUrl string `env:"RECOVERY_URL"` PrivateKey string `env:"JWT_PRIVATE_KEY"` PublicKey string `env:"JWT_PUBLIC_KEY,required"` Issuer string `env:"JWT_ISSUER,required"` Audience string `env:"JWT_AUDIENCE,required"` } func LoadConfig() (*Config, error) { if err := godotenv.Load(); err != nil { log.Print("No .env file found") } var config Config if err := env.Parse(&config); err != nil { return nil, err } return &config, nil }