package config import ( "github.com/ilyakaznacheev/cleanenv" log "github.com/sirupsen/logrus" ) type Config struct { Psql Postgres Redis Redis Mongo Mongo JWT JWT Srv Server `yaml:"server"` Mig Migrations `yaml:"migrations"` Mode string `env:"MODE"` } type Postgres struct { Host string `env:"DB_HOST"` Port int `env:"DB_PORT"` User string `env:"DB_USER"` Password string `env:"DB_PASS"` Dbname string `env:"DB_NAME"` Sslmode string `env:"DB_SSLMODE"` } type Redis struct { Host string `env:"REDIS_HOST"` Port int `env:"REDIS_PORT"` Password string `env:"REDIS_PASS"` DB int `env:"REDIS_DB"` } type Mongo struct { Host string `env:"MONGO_HOST"` Port int `env:"MONGO_PORT"` DB string `env:"MONGO_DB"` } type JWT struct { SecretKey []byte `env:"JWT_SECRET_KEY"` } type Server struct { Port int `yaml:"port"` RequestIDHeader string `yaml:"request_id_header"` } type Migrations struct { Folder string `yaml:"folder"` } func GetConfig() Config { var cfg Config if err := cleanenv.ReadConfig(".env", &cfg); err != nil { log.Fatalf("error occurred while reading config: %s", err) } if err := cleanenv.ReadConfig("config.yml", &cfg); err != nil { log.Fatalf("error occurred while reading config: %s", err) } return cfg }