TinySkin/utils/tx.go
2023-09-02 22:35:53 +08:00

29 lines
647 B
Go

package utils
// func WithTx(ctx context.Context, opts *sql.TxOptions, q mysql.Querier, db *sql.DB, f func(mysql.Querier) error) error {
// w, ok := q.(interface {
// WithTx(tx *sql.Tx) *mysql.Queries
// })
// var tx *sql.Tx
// if ok {
// var err error
// tx, err = db.BeginTx(ctx, opts)
// if err != nil {
// return fmt.Errorf("WithTx: %w", err)
// }
// defer tx.Rollback()
// q = w.WithTx(tx)
// }
// err := f(q)
// if err != nil {
// return fmt.Errorf("WithTx: %w", err)
// }
// if tx != nil {
// err := tx.Commit()
// if err != nil {
// return fmt.Errorf("WithTx: %w", err)
// }
// }
// return nil
// }