Files
steampipe/pkg/db/db_client/db_client_options.go

46 lines
907 B
Go

package db_client
import (
"time"
"github.com/jackc/pgx/v5/pgxpool"
)
type PoolOverrides struct {
Size int
MaxLifeTime time.Duration
MaxIdleTime time.Duration
}
// applies the values in the given config if they are non-zero in PoolOverrides
func (c PoolOverrides) apply(config *pgxpool.Config) {
if c.Size > 0 {
config.MaxConns = int32(c.Size)
}
if c.MaxLifeTime > 0 {
config.MaxConnLifetime = c.MaxLifeTime
}
if c.MaxIdleTime > 0 {
config.MaxConnIdleTime = c.MaxIdleTime
}
}
type clientConfig struct {
userPoolSettings PoolOverrides
managementPoolSettings PoolOverrides
}
type ClientOption func(*clientConfig)
func WithUserPoolOverride(s PoolOverrides) ClientOption {
return func(cc *clientConfig) {
cc.userPoolSettings = s
}
}
func WithManagementPoolOverride(s PoolOverrides) ClientOption {
return func(cc *clientConfig) {
cc.managementPoolSettings = s
}
}