package db import ( "context" "fmt" "time" "github.com/jackc/pgx/v5/pgxpool" ) var Pool *pgxpool.Pool func Connect(databaseURL string) error { config, err := pgxpool.ParseConfig(databaseURL) if err != nil { return fmt.Errorf("failed to parse database URL: %w", err) } config.MaxConns = 25 config.MinConns = 5 config.MaxConnLifetime = time.Hour config.MaxConnIdleTime = 30 * time.Minute Pool, err = pgxpool.NewWithConfig(context.Background(), config) if err != nil { return fmt.Errorf("failed to create pool: %w", err) } if err = Pool.Ping(context.Background()); err != nil { return fmt.Errorf("failed to ping database: %w", err) } return nil } func Close() { if Pool != nil { Pool.Close() } } func GetPool() *pgxpool.Pool { return Pool }