31 lines
598 B
Go
31 lines
598 B
Go
package db
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
)
|
|
|
|
type Config struct {
|
|
DSN string
|
|
MaxConns int32
|
|
MinConns int32
|
|
MaxConnLifetime time.Duration
|
|
MaxConnIdleTime time.Duration
|
|
}
|
|
|
|
func NewPool(ctx context.Context, cfg Config) (*pgxpool.Pool, error) {
|
|
poolCfg, err := pgxpool.ParseConfig(cfg.DSN)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
poolCfg.MaxConns = cfg.MaxConns
|
|
poolCfg.MinConns = cfg.MinConns
|
|
poolCfg.MaxConnLifetime = cfg.MaxConnLifetime
|
|
poolCfg.MaxConnIdleTime = cfg.MaxConnIdleTime
|
|
|
|
return pgxpool.NewWithConfig(ctx, poolCfg)
|
|
}
|