pgxutil

package module
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2021 License: MIT Imports: 6 Imported by: 0

README

pgxutil

build-img pkg-img reportcard-img coverage-img

Go jackc/pgx helper to write proper transactions.

Features

  • Simple API.

Install

Go version 1.17+

go get github.com/cristalhq/pgxutil

Example

// create jackc/pgx pool
var pool *pgxpool.Pool

db, err := pgxutil.New(pool)
if err != nil {
	panic(err)
}

ctx := context.Background()

// to make transaction with a given isolation level
level := pgx.Serializable
errTx := db.InTx(ctx, level, func(tx pgx.Tx) error {
	// TODO: good query with tx
	return nil
})
if errTx != nil {
	panic(errTx)
}

// to make read-only transaction with a read committed isolation level
errRead := db.InReadOnlyTx(ctx, func(tx pgx.Tx) error {
	// TODO: good read-only query with tx
	return nil
})
if errRead != nil {
	panic(errRead)
}	

Also see examples: examples_test.go.

Documentation

See these docs.

License

MIT License.

Documentation

Overview

Example
var pool *pgxpool.Pool

db, err := pgxutil.New(pool)
if err != nil {
	panic(err)
}

ctx := context.Background()

// to make transaction with a given isolation level
level := pgx.Serializable
errTx := db.InTx(ctx, level, func(tx pgx.Tx) error {
	// TODO: good query with tx
	return nil
})
if errTx != nil {
	panic(errTx)
}

// to make read-only transaction with a read committed isolation level
errRead := db.InReadOnlyTx(ctx, func(tx pgx.Tx) error {
	// TODO: good read-only query with tx
	return nil
})
if errRead != nil {
	panic(errRead)
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DB

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

func New

func New(pool *pgxpool.Pool) (*DB, error)

New creates a new wrapper for pgx.

func (*DB) InReadOnlyTx

func (db *DB) InReadOnlyTx(ctx context.Context, fn func(tx pgx.Tx) error) error

InReadOnlyTx runs the given function within a read-only transaction with read commited isolation level.

func (*DB) InTx

func (db *DB) InTx(ctx context.Context, level pgx.TxIsoLevel, fn func(tx pgx.Tx) error) error

InTx runs the given function within a transaction with a given isolation level.

Jump to

Keyboard shortcuts

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