feat: prefer DATABASE_URL format for db connection, fallback to individual params
This commit is contained in:
parent
2111e7e32d
commit
924255fdfb
2 changed files with 46 additions and 33 deletions
|
|
@ -1,12 +1,15 @@
|
|||
# Environment variables for GoHorse Jobs Backend
|
||||
|
||||
# Database Configuration
|
||||
DB_HOST=localhost
|
||||
DB_PORT=5432
|
||||
DB_USER=postgres
|
||||
DB_PASSWORD=yourpassword
|
||||
DB_NAME=gohorsejobs
|
||||
DB_SSLMODE=disable
|
||||
# Database Configuration (preferred: use DATABASE_URL)
|
||||
DATABASE_URL=postgresql://user:password@localhost:5432/gohorsejobs?sslmode=require
|
||||
|
||||
# Alternative: Individual params (used if DATABASE_URL not set)
|
||||
# DB_HOST=localhost
|
||||
# DB_PORT=5432
|
||||
# DB_USER=postgres
|
||||
# DB_PASSWORD=yourpassword
|
||||
# DB_NAME=gohorsejobs
|
||||
# DB_SSLMODE=require
|
||||
|
||||
# S3/Object Storage Configuration (Civo S3-compatible)
|
||||
AWS_REGION=nyc1
|
||||
|
|
|
|||
|
|
@ -14,34 +14,44 @@ var DB *sql.DB
|
|||
|
||||
func InitDB() {
|
||||
var err error
|
||||
host := os.Getenv("DB_HOST")
|
||||
if host == "" {
|
||||
log.Fatal("DB_HOST environment variable not set")
|
||||
}
|
||||
user := os.Getenv("DB_USER")
|
||||
if user == "" {
|
||||
log.Fatal("DB_USER environment variable not set")
|
||||
}
|
||||
password := os.Getenv("DB_PASSWORD")
|
||||
if password == "" {
|
||||
log.Fatal("DB_PASSWORD environment variable not set")
|
||||
}
|
||||
dbname := os.Getenv("DB_NAME")
|
||||
if dbname == "" {
|
||||
log.Fatal("DB_NAME environment variable not set")
|
||||
}
|
||||
port := os.Getenv("DB_PORT")
|
||||
if port == "" {
|
||||
port = "5432"
|
||||
}
|
||||
var connStr string
|
||||
|
||||
sslmode := os.Getenv("DB_SSLMODE")
|
||||
if sslmode == "" {
|
||||
sslmode = "require" // Default to require for production security
|
||||
}
|
||||
// Prefer DATABASE_URL if set (standard format)
|
||||
if dbURL := os.Getenv("DATABASE_URL"); dbURL != "" {
|
||||
connStr = dbURL
|
||||
log.Println("Using DATABASE_URL for connection")
|
||||
} else {
|
||||
// Fallback to individual params for backward compatibility
|
||||
host := os.Getenv("DB_HOST")
|
||||
if host == "" {
|
||||
log.Fatal("DATABASE_URL or DB_HOST environment variable not set")
|
||||
}
|
||||
user := os.Getenv("DB_USER")
|
||||
if user == "" {
|
||||
log.Fatal("DB_USER environment variable not set")
|
||||
}
|
||||
password := os.Getenv("DB_PASSWORD")
|
||||
if password == "" {
|
||||
log.Fatal("DB_PASSWORD environment variable not set")
|
||||
}
|
||||
dbname := os.Getenv("DB_NAME")
|
||||
if dbname == "" {
|
||||
log.Fatal("DB_NAME environment variable not set")
|
||||
}
|
||||
port := os.Getenv("DB_PORT")
|
||||
if port == "" {
|
||||
port = "5432"
|
||||
}
|
||||
|
||||
connStr := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s",
|
||||
host, port, user, password, dbname, sslmode)
|
||||
sslmode := os.Getenv("DB_SSLMODE")
|
||||
if sslmode == "" {
|
||||
sslmode = "require" // Default to require for production security
|
||||
}
|
||||
|
||||
connStr = fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s",
|
||||
host, port, user, password, dbname, sslmode)
|
||||
log.Println("Using individual DB_* params for connection")
|
||||
}
|
||||
|
||||
DB, err = sql.Open("postgres", connStr)
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Reference in a new issue