Documentation ¶
Overview ¶
Package txutil provides safe transaction-encapsulation functions which have retry semantics as necessary.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExecuteInTx ¶
func ExecuteInTx(ctx context.Context, dbDriver driver.Driver, tx txLike, fn func() error) (err error)
ExecuteInTx runs the fn callback inside the specified transaction, restarting the transaction as necessary (for systems like CockroachDB), and committing or rolling back the transaction depending on whether fn returns an error.
In most cases, WithTx() is to be preferred, but this variant is useful when working with a db that isn't an *sql.DB.
func WithTx ¶
func WithTx(ctx context.Context, db tagsql.DB, txOpts *sql.TxOptions, fn func(context.Context, tagsql.Tx) error) error
WithTx starts a transaction on the given sql.DB. The transaction is started in the appropriate manner, and will be restarted if appropriate. While in the transaction, fn is called with a handle to the transaction in order to make use of it. If fn returns an error, the transaction is rolled back. If fn returns nil, the transaction is committed.
If fn has any side effects outside of changes to the database, they must be idempotent! fn may be called more than one time.
Types ¶
This section is empty.