mirror of
https://github.com/ForFarmTeam/ForFarm.git
synced 2025-12-18 13:34:08 +01:00
29 lines
628 B
Go
29 lines
628 B
Go
package cmdutil
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/jackc/pgx/v5"
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
)
|
|
|
|
func NewDatabasePool(ctx context.Context, maxConns int) (*pgxpool.Pool, error) {
|
|
if maxConns == 0 {
|
|
maxConns = 1
|
|
}
|
|
|
|
url := fmt.Sprintf("%s?pool_max_conns=%d&pool_min_conns=%d", os.Getenv("DATABASE_URL"), maxConns, 2)
|
|
config, err := pgxpool.ParseConfig(url)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
config.ConnConfig.DefaultQueryExecMode = pgx.QueryExecModeSimpleProtocol
|
|
config.MaxConnLifetime = 1 * time.Hour
|
|
config.MaxConnIdleTime = 30 * time.Second
|
|
return pgxpool.NewWithConfig(ctx, config)
|
|
}
|