Skip to content

immannino/transactor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

transactor

Transactor is a simple pgx/v4 db transactor manager. Implementation is based on examples from Clean Transactions in Hexagon.

Usage

Installation

go get github.com/immannino/transactor

Example

See an example

package main

import (
	"context"
	"log"

	"github.com/immannino/transactor"
	"github.com/jackc/pgx/v4/pgxpool"
)

type App struct {
	db   *pgxpool.Pool
	txer transactor.Transactor
}

func main() {
	db, _ := pgxpool.Connect(context.Background(), "postgres://admin:admin@localhost:5432")
	txer, _ := transactor.New(db)

	app := &App{db, txer}

	// do some stuff
	_ = app.txer.WithinTransaction(context.Background(), func(ctx context.Context) error {
		tx := transactor.ExtractTx(ctx)

		_, err := tx.Exec(ctx, "INSERT INTO users (name, phone) VALUES ('Spongebob', '80012345678')")
		if err != nil {
			log.Println("Error with txn")
			return err
		}

		log.Println("Successfully inserted users")
		return nil
	})
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages