photum/backend/internal/db/db.go

41 lines
1.1 KiB
Go

package db
import (
"context"
"log"
"photum-backend/internal/config"
"photum-backend/internal/db/generated"
"github.com/jackc/pgx/v5/pgxpool"
)
func Connect(cfg *config.Config) (*generated.Queries, *pgxpool.Pool) {
log.Printf("Connecting to database with DSN: %#v", cfg.DBDsn)
poolConfig, err := pgxpool.ParseConfig(cfg.DBDsn)
if err != nil {
log.Fatalf("Unable to parse DB DSN: %v", err)
}
// Diagnostic log (password presence only)
if poolConfig != nil && poolConfig.ConnConfig != nil {
hasPassword := poolConfig.ConnConfig.Password != ""
log.Printf("DB config user=%s host=%s port=%d password_set=%t",
poolConfig.ConnConfig.User,
poolConfig.ConnConfig.Host,
poolConfig.ConnConfig.Port,
hasPassword,
)
}
pool, err := pgxpool.NewWithConfig(context.Background(), poolConfig)
if err != nil {
log.Fatalf("Unable to connect to database: %v", err)
}
if err := pool.Ping(context.Background()); err != nil {
log.Fatalf("Database ping failed: %v", err)
}
return generated.New(pool), pool
}