golang-template/internal/database/db.go

40 lines
822 B
Go

package database
import (
"database/sql"
"fmt"
"os"
_ "github.com/lib/pq"
)
func Connect() (*sql.DB, error) {
dbHost := getEnv("DB_HOST", "localhost")
dbPort := getEnv("DB_PORT", "5432")
dbUser := getEnv("DB_USER", "postgres")
dbPassword := getEnv("DB_PASSWORD", "")
dbName := getEnv("DB_NAME", "backend_template")
sslMode := getEnv("DB_SSL_MODE", "disable")
connStr := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s",
dbHost, dbPort, dbUser, dbPassword, dbName, sslMode)
db, err := sql.Open("postgres", connStr)
if err != nil {
return nil, err
}
// Verify connection
if err = db.Ping(); err != nil {
return nil, err
}
return db, nil
}
func getEnv(key, defaultValue string) string {
if value := os.Getenv(key); value != "" {
return value
}
return defaultValue
}