feat: Complete env system

This commit is contained in:
2026-04-04 14:58:45 +03:00
parent 89f71ec7e7
commit 3a89106c1b
4 changed files with 61 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
package cfg
import (
"fmt"
"log"
"github.com/ilyakaznacheev/cleanenv"
)
type Config struct {
DBHost string `env:"DB_HOST" env-required:"true"`
DBPort int `env:"DB_PORT" env-required:"true"`
DBPassword string `env:"DB_PASS" env-required:"true"`
DBUser string `env:"DB_USER" env-required:"true"`
DBName string `env:"DB_NAME" env-required:"true"`
LogLevel string `env:"LOG_LEVEL" env-default:"INFO"`
Mode string `env:"MODE" env-default:"DEV"`
}
func NewConfig() (*Config, error) {
var cfg Config
if err := cleanenv.ReadConfig(".env", &cfg); err != nil {
log.Printf("failed read config: %v", err)
if err = cleanenv.ReadEnv(&cfg); err != nil {
return nil, fmt.Errorf("env read failed: %v", err)
}
}
return &cfg, nil
}
func (c *Config) GetURLPostgres() string {
return fmt.Sprintf(
"postgres://%v:%v@%v:%v/%v?sslmode=disable",
c.DBUser,
c.DBPassword,
c.DBHost,
c.DBPort,
c.DBName)
}