Sketch
This commit is contained in:
43
src/internal/config/database.go
Normal file
43
src/internal/config/database.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user