mirror of
https://github.com/alice-lg/alice-lg.git
synced 2024-05-11 05:55:03 +00:00
39 lines
858 B
Go
39 lines
858 B
Go
package postgres
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/alice-lg/alice-lg/pkg/config"
|
|
|
|
"github.com/jackc/pgx/v4/pgxpool"
|
|
)
|
|
|
|
var (
|
|
// ErrMaxConnsUnconfigured will be returned, if the
|
|
// the maximum connections are zero.
|
|
ErrMaxConnsUnconfigured = errors.New("max connections not configured")
|
|
)
|
|
|
|
// Connect creates and configures a pgx pool
|
|
func Connect(ctx context.Context, opts *config.PostgresConfig) (*pgxpool.Pool, error) {
|
|
// Initialize postgres connection
|
|
cfg, err := pgxpool.ParseConfig(opts.URL)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
cfg.ConnConfig.RuntimeParams["application_name"] = filepath.Base(os.Args[0])
|
|
if opts.MaxConns == 0 {
|
|
return nil, ErrMaxConnsUnconfigured
|
|
}
|
|
|
|
// We need some more connections
|
|
cfg.MaxConns = opts.MaxConns
|
|
cfg.MinConns = opts.MinConns
|
|
|
|
return pgxpool.ConnectConfig(ctx, cfg)
|
|
}
|