clpostgres

package
v0.9.2 Latest Latest
Warning

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

Go to latest
Published: May 10, 2023 License: MIT Imports: 26 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

New inits a stdlib sql connection. Any other dependency can optionall ybe 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 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 Prod

func Prod() fx.Option

Prod configures the DI for providng database connectivity.

func Test

func Test() fx.Option

Test 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"`
	// IamAuth will cause the password to be set to an IAM token for authentication
	IamAuth bool `env:"IAM_AUTH"`

	// TemporaryDatabase can be set to cause the logic to create a random database name and initialize
	// it when running auto-migration. This is mostly useful for automated tests
	TemporaryDatabase bool `env:"TEMPORARY_DATABASE" envDefault:"false"`
	// AutoMigration can be set to true to cause the logic to automatically run migrations when started. This
	// is mostly useful for automated tests.
	AutoMigration bool `env:"AUTO_MIGRATION" envDefault:"false"`
}

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) *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 struct {
	// contains filtered or unexported fields
}

Migrater allows programmatic migration of a database schema. Mostly used in testing and local development to provide fully isolated databases.

func NewMigrater added in v0.4.1

func NewMigrater(
	cfg Config,
	logs *zap.Logger,
	rwcfg *pgxpool.Config,
	rocfg *pgxpool.Config,
	dir migrate.Dir,
) (*Migrater, error)

NewMigrater inits the migrater.

func (Migrater) DropDatabase added in v0.4.1

func (m Migrater) DropDatabase(ctx context.Context) error

DropDatabase drops the schema.

func (Migrater) Migrate added in v0.4.1

func (m Migrater) Migrate(ctx context.Context) error

Migrate initializes the schema.

Jump to

Keyboard shortcuts

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