Changeset 0.21.1.1 (#87)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
@@ -60,7 +61,7 @@ func Load() *Config {
|
||||
|
||||
return &Config{
|
||||
Port: getEnv("PORT", "8080"),
|
||||
DatabaseURL: getEnv("DATABASE_URL", ""),
|
||||
DatabaseURL: resolveDatabaseURL(),
|
||||
DBDriver: getEnv("DB_DRIVER", ""),
|
||||
JWTSecret: getEnv("JWT_SECRET", "dev-secret-change-me"),
|
||||
Environment: getEnv("ENVIRONMENT", "development"),
|
||||
@@ -85,6 +86,31 @@ func Load() *Config {
|
||||
}
|
||||
}
|
||||
|
||||
// resolveDatabaseURL returns the database connection string.
|
||||
//
|
||||
// Resolution order:
|
||||
// 1. DATABASE_URL — explicit DSN (K8s, .env, manual)
|
||||
// 2. POSTGRES_* vars — assembled from individual env vars:
|
||||
// POSTGRES_HOST, POSTGRES_PORT, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB
|
||||
// (set by K8s manifest and docker-compose)
|
||||
// 3. Empty string — backend runs without database
|
||||
func resolveDatabaseURL() string {
|
||||
if dsn := os.Getenv("DATABASE_URL"); dsn != "" {
|
||||
return dsn
|
||||
}
|
||||
// Assemble from individual vars (K8s sets POSTGRES_*, docker-compose may too)
|
||||
host := getEnv("POSTGRES_HOST", "")
|
||||
if host == "" {
|
||||
return ""
|
||||
}
|
||||
port := getEnv("POSTGRES_PORT", "5432")
|
||||
user := getEnv("POSTGRES_USER", "")
|
||||
pass := getEnv("POSTGRES_PASSWORD", "")
|
||||
db := getEnv("POSTGRES_DB", "chat_switchboard")
|
||||
ssl := getEnv("POSTGRES_SSLMODE", "disable")
|
||||
return fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=%s", user, pass, host, port, db, ssl)
|
||||
}
|
||||
|
||||
// sanitizeBasePath ensures the path starts with / and doesn't end with /.
|
||||
// Empty string means root (no prefix).
|
||||
func sanitizeBasePath(p string) string {
|
||||
|
||||
Reference in New Issue
Block a user