Exemplo n.º 1
0
Arquivo: tx.go Projeto: upper/db
// RunTx creates a transaction context and runs fn within it.
func RunTx(d sqlbuilder.Database, fn func(tx sqlbuilder.Tx) error) error {
	tx, err := d.NewTx()
	if err != nil {
		return err
	}
	defer tx.Close()
	if err := fn(tx); err != nil {
		tx.Rollback()
		return err
	}
	return tx.Commit()
}