44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
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
|
|
}
|