pgsql

package module
v2.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 17, 2026 License: MIT Imports: 14 Imported by: 0

README

Bun ORM PostgreSQL provider

PostgreSQL provider module for Bun ORM integration with Melody.

This module implements bunorm.Provider and produces a Bun database handle configured with the PostgreSQL dialect.

Import

  • github.com/precision-soft/melody/integrations/bunorm/v2
  • github.com/precision-soft/melody/integrations/bunorm/pgsql/v2

Provider

pgsql.Provider reads configuration values from Melody config using the parameter names passed to NewProvider.

Common parameter names:

  • DB_HOST
  • DB_PORT
  • DB_DATABASE
  • DB_USER
  • DB_PASSWORD

Pool and timeout defaults can be overridden via WithPoolConfig and WithTimeoutConfig using PoolConfig and TimeoutConfig.

Advanced connector customization

If you need driver options that are not exposed by TimeoutConfig or other typed configs, use a post-build hook.

Provider constructors accept optional provider options:

Configure a hook via pgsql.WithPostBuildHook using the pgsql.PostBuildHook signature.

The hook is executed during open, after Melody defaults and typed configs are applied, and before opening the SQL database.

Example:

package main

func main() {
	provider := pgsql.NewProvider(
		"DB_HOST",
		"DB_PORT",
		"DB_DATABASE",
		"DB_USER",
		"DB_PASSWORD",
		pgsql.WithPostBuildHook(func(ctx context.Context, resolver containercontract.Resolver, connector *pgdriver.Connector) error {
			_ = ctx
			_ = resolver
			connector.Config().TLSConfig.InsecureSkipVerify = true
			return nil
		}),
	)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsDuplicateKey

func IsDuplicateKey(err error) bool

Types

type ConnectionConfig

type ConnectionConfig struct {
	// contains filtered or unexported fields
}

func NewConnectionConfig

func NewConnectionConfig(host string, port string, database string, user string, password string) *ConnectionConfig

func (*ConnectionConfig) Database

func (instance *ConnectionConfig) Database() string

func (*ConnectionConfig) Host

func (instance *ConnectionConfig) Host() string

func (*ConnectionConfig) Password

func (instance *ConnectionConfig) Password() string

func (*ConnectionConfig) Port

func (instance *ConnectionConfig) Port() string

func (*ConnectionConfig) SafeContext

func (instance *ConnectionConfig) SafeContext() map[string]any

func (*ConnectionConfig) User

func (instance *ConnectionConfig) User() string

type PoolConfig

type PoolConfig struct {
	MaxOpenConnections    int
	MaxIdleConnections    int
	ConnectionMaxLifetime time.Duration
	ConnectionMaxIdleTime time.Duration
}

func DefaultPoolConfig

func DefaultPoolConfig() *PoolConfig

func NewPoolConfig

func NewPoolConfig(
	maxOpenConnections int,
	maxIdleConnections int,
	connectionMaxLifetime time.Duration,
	connectionMaxIdleTime time.Duration,
) *PoolConfig

type PostBuildHook

type PostBuildHook func(
	ctx context.Context,
	connector *pgdriver.Connector,
) error

type Provider

type Provider struct {
	// contains filtered or unexported fields
}

func NewProvider

func NewProvider(
	providerOptions ...ProviderOption,
) *Provider

func (*Provider) Open

func (instance *Provider) Open(params bunorm.ConnectionParams, logger loggingcontract.Logger) (*bun.DB, error)

func (*Provider) WithPoolConfig

func (instance *Provider) WithPoolConfig(poolConfig *PoolConfig) *Provider

func (*Provider) WithRetryConfig

func (instance *Provider) WithRetryConfig(retryConfig *RetryConfig) *Provider

func (*Provider) WithTimeoutConfig

func (instance *Provider) WithTimeoutConfig(timeoutConfig *TimeoutConfig) *Provider

type ProviderOption

type ProviderOption func(provider *Provider)

func WithPostBuildHook

func WithPostBuildHook(hook PostBuildHook) ProviderOption

type RetryConfig

type RetryConfig struct {
	MaxAttempts       uint32
	InitialDelay      time.Duration
	MaxDelay          time.Duration
	BackoffMultiplier float64
}

func DefaultRetryConfig

func DefaultRetryConfig() *RetryConfig

func NewRetryConfig

func NewRetryConfig(
	maxAttempts uint32,
	initialDelay time.Duration,
	maxDelay time.Duration,
	backoffMultiplier float64,
) *RetryConfig

type TimeoutConfig

type TimeoutConfig struct {
	ConnectTimeout time.Duration
}

func DefaultTimeoutConfig

func DefaultTimeoutConfig() *TimeoutConfig

func NewTimeoutConfig

func NewTimeoutConfig(
	connectTimeout time.Duration,
) *TimeoutConfig

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL