2024-12-18 18:54:48 +00:00
|
|
|
package database
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"fmt"
|
|
|
|
|
"log"
|
2024-12-24 17:13:48 +00:00
|
|
|
"queryorchestration/internal/env"
|
2024-12-18 18:54:48 +00:00
|
|
|
|
|
|
|
|
"github.com/jackc/pgx/v5"
|
|
|
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func createConnectionString() string {
|
|
|
|
|
driver := "postgres"
|
2024-12-24 18:11:25 +00:00
|
|
|
dbUser := env.GetPanic("DB_USER")
|
|
|
|
|
dbPass := env.GetPanic("DB_PASS")
|
|
|
|
|
dbHost := env.GetPanic("DB_HOST")
|
|
|
|
|
dbPort := env.GetPanic("DB_PORT")
|
|
|
|
|
dbName := env.GetPanic("DB_NAME")
|
2024-12-23 18:13:57 +00:00
|
|
|
opts := "sslmode=disable"
|
|
|
|
|
connStr := fmt.Sprintf("%s://%s:%s@%s:%s/%s?%s", driver, dbUser, dbPass, dbHost, dbPort, dbName, opts)
|
2024-12-18 18:54:48 +00:00
|
|
|
|
|
|
|
|
return connStr
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetDBPool(ctx context.Context) *pgxpool.Pool {
|
|
|
|
|
connStr := createConnectionString()
|
|
|
|
|
|
|
|
|
|
pool, err := pgxpool.New(ctx, connStr)
|
|
|
|
|
if err != nil {
|
2024-12-24 18:11:25 +00:00
|
|
|
log.Panicf("Unable to create database pool: %v\n", err)
|
2024-12-18 18:54:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return pool
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetDBConn(ctx context.Context) *pgx.Conn {
|
|
|
|
|
connStr := createConnectionString()
|
|
|
|
|
|
|
|
|
|
conn, err := pgx.Connect(ctx, connStr)
|
|
|
|
|
if err != nil {
|
2024-12-24 18:11:25 +00:00
|
|
|
log.Panicf("Unable to connect to database: %v\n", err)
|
2024-12-18 18:54:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return conn
|
|
|
|
|
}
|