package config import ( "fmt" "time" ) type DatabaseConfig struct { Kind string Host string Port string User string Password string Name string UseTLS bool Timeout time.Duration } func FillDatabaseConfig() DatabaseConfig { return DatabaseConfig{ Kind: GetEnvAs("DATABASE_KIND", "postgres", ParseString), Host: GetEnvAs("DATABASE_HOST", "localhost", ParseString), Port: GetEnvAs("DATABASE_PORT", "5432", ParseString), User: GetEnvAs("DATABASE_USER", "chudovo", ParseString), Password: GetEnvAs("DATABASE_PASS", "top_secret", ParseString), Name: GetEnvAs("DATABASE_NAME", "chudovo", ParseString), UseTLS: GetEnvAs("DATABASE_USETLS", false, ParseBool), } } func GetDatabaseDSN(cfg *DatabaseConfig) string { dsn := fmt.Sprintf( "host=%s port=%s user=%s password=%s dbname=%s", cfg.Host, cfg.Port, cfg.User, cfg.Password, cfg.Name, ) // Если TLS отключен, добавляем параметр sslmode=disable if !cfg.UseTLS { dsn += " sslmode=disable" } return dsn }