39 lines
831 B
Go
39 lines
831 B
Go
package libshared
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
)
|
|
|
|
var Pool *pgxpool.Pool
|
|
|
|
func GetDbPool() *pgxpool.Pool {
|
|
// Construct the connection string
|
|
// Note: Ensure your Docker Compose env vars match these keys!
|
|
dburl := fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable",
|
|
os.Getenv("POSTGRES_USER"),
|
|
os.Getenv("POSTGRES_PASSWORD"),
|
|
os.Getenv("POSTGRES_HOSTNAME"),
|
|
os.Getenv("POSTGRES_DB"),
|
|
)
|
|
|
|
var err error
|
|
// Use pgxpool.New instead of Connect for v5
|
|
Pool, err = pgxpool.New(context.Background(), dburl)
|
|
if err != nil {
|
|
log.Fatalf("Unable to create connection pool: %v", err)
|
|
}
|
|
|
|
// Ping the database to verify the connection is actually live
|
|
err = Pool.Ping(context.Background())
|
|
if err != nil {
|
|
log.Fatalf("Unable to ping database: %v", err)
|
|
}
|
|
|
|
return Pool
|
|
}
|