This commit is contained in:
2025-11-19 01:28:34 +03:00
parent 469879cfd9
commit 33e49e1a00
12 changed files with 659 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
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
}