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
|
# Environment variables for GoHorse Jobs Backend
|
||||||
|
|
||||||
# Database Configuration
|
# Database Configuration (preferred: use DATABASE_URL)
|
||||||
DB_HOST=localhost
|
DATABASE_URL=postgresql://user:password@localhost:5432/gohorsejobs?sslmode=require
|
||||||
DB_PORT=5432
|
|
||||||
DB_USER=postgres
|
# Alternative: Individual params (used if DATABASE_URL not set)
|
||||||
DB_PASSWORD=yourpassword
|
# DB_HOST=localhost
|
||||||
DB_NAME=gohorsejobs
|
# DB_PORT=5432
|
||||||
DB_SSLMODE=disable
|
# DB_USER=postgres
|
||||||
|
# DB_PASSWORD=yourpassword
|
||||||
|
# DB_NAME=gohorsejobs
|
||||||
|
# DB_SSLMODE=require
|
||||||
|
|
||||||
# S3/Object Storage Configuration (Civo S3-compatible)
|
# S3/Object Storage Configuration (Civo S3-compatible)
|
||||||
AWS_REGION=nyc1
|
AWS_REGION=nyc1
|
||||||
|
|
|
||||||
|
|
@ -14,34 +14,44 @@ var DB *sql.DB
|
||||||
|
|
||||||
func InitDB() {
|
func InitDB() {
|
||||||
var err error
|
var err error
|
||||||
host := os.Getenv("DB_HOST")
|
var connStr string
|
||||||
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"
|
|
||||||
}
|
|
||||||
|
|
||||||
sslmode := os.Getenv("DB_SSLMODE")
|
// Prefer DATABASE_URL if set (standard format)
|
||||||
if sslmode == "" {
|
if dbURL := os.Getenv("DATABASE_URL"); dbURL != "" {
|
||||||
sslmode = "require" // Default to require for production security
|
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",
|
sslmode := os.Getenv("DB_SSLMODE")
|
||||||
host, port, user, password, dbname, 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)
|
DB, err = sql.Open("postgres", connStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue