clpostgres

package
v0.28.0 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2024 License: MIT Imports: 24 Imported by: 0

Documentation

Overview

Package clpostgres provides re-usable components for using PostgreSQL

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func New

func New(
	pcfg *pgxpool.Config,
	_ Migrater,
	trp trace.TracerProvider,
	mtp metric.MeterProvider,
) (*sql.DB, error)

New inits a stdlib sql connection. Any other dependency can optionally be provided as migrated to force it's lifecycle to be run before the database is connected. This is mostly useful to run migration logic (such as initializing the database).

func NewPool added in v0.10.8

func NewPool(pcfg *pgxpool.Config, cfg Config, _ Migrater) (*pgxpool.Pool, error)

NewPool inits a raw pgx postgres connection pool. Migrater is specified as a dependency so it force it's lifecycle hooks to be run.

func NewReadOnlyConfig

func NewReadOnlyConfig(cfg Config, logs *zap.Logger, awsc aws.Config) (*pgxpool.Config, error)

NewReadOnlyConfig constructs a config for a read-only database connecion. The aws config is optional and is only used when IamAuth option is set.

func NewReadWriteConfig

func NewReadWriteConfig(cfg Config, logs *zap.Logger, awsc aws.Config) (*pgxpool.Config, error)

NewReadWriteConfig constructs a config for a read-write database connecion. The aws config is optional and only used when the IamAuth option is set.

func Provide added in v0.17.0

func Provide() fx.Option

Provide configures the DI for providng database connectivity.

func TestProvide added in v0.17.0

func TestProvide() fx.Option

TestProvide configures the DI for a test environment.

Types

type Config

type Config struct {
	// DatabaseName names the database the connection will be made to
	DatabaseName string `env:"DATABASE_NAME" envDefault:"postgres"`
	// ReadWriteHostname endpoint allows configuration of a endpoint that can read and write
	ReadWriteHostname string `env:"RW_HOSTNAME" envDefault:"localhost"`
	// ReadOnlyHostname endpoint allows configuration of a endpoint that can read and write
	ReadOnlyHostname string `env:"RO_HOSTNAME" envDefault:"localhost"`
	// Port for to the database connection(s)
	Port int `env:"PORT" envDefault:"5432"`
	// Username configures the username to connect to the postgres instance
	Username string `env:"USERNAME" envDefault:"postgres"`
	// Password configures the postgres password for authenticating with the instance
	Password string `env:"PASSWORD"`

	// ApplicationName allows the application to indicate its name so connections can be more easily debugged
	ApplicationName string `env:"APPLICATION_NAME" envDefault:"unknown"`
	// PgxLogLevel is provided to pgx to determine the level of logging of postgres interactions
	PgxLogLevel string `env:"PGX_LOG_LEVEL" envDefault:"info"`

	// SSLMode sets tls encryption on the database connection
	SSLMode string `env:"SSL_MODE" envDefault:"disable"`
	// IamAuthRegion will cause the password to be set to an IAM token for authentication
	IamAuthRegion string `env:"IAM_AUTH_REGION"`

	// PoolConnectionTimeout configures how long the pgx pool connect logic waits for the connection to establish
	PoolConnectionTimeout time.Duration `env:"POOL_CONNECTION_TIMEOUT" envDefault:"10s"`
}

Config configures the code in this package.

type Logger

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

Logger is a pgx logger that uses a main zap logger for logging but will prefer using a context specific logger if it exists.

func NewLogger

func NewLogger(dbcfg *pgxpool.Config, fallback *zap.Logger) *Logger

NewLogger inits a logger for pgx. Inside is a contextual logger so we can log each postgres query with context fields for tracing.

func (*Logger) Log

func (pl *Logger) Log(ctx context.Context, level tracelog.LogLevel, msg string, data map[string]interface{})

Log implements the postgres logger.

type Migrater added in v0.4.1

type Migrater interface {
	Migrate(ctx context.Context) error
	Reset(ctx context.Context) error
}

Migrater implements a migtration strategy that can be run before the database connection (pool) is setup.

Directories

Path Synopsis
Package clpgmigrate implements the postgres migration logic.
Package clpgmigrate implements the postgres migration logic.
Package cltx is a small package for adding and retrieving pgx transactions from the context.
Package cltx is a small package for adding and retrieving pgx transactions from the context.

Jump to

Keyboard shortcuts

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