planner/plan/storage/transaction.go

41 lines
706 B
Go
Raw Permalink Normal View History

2025-01-13 09:13:48 +01:00
package storage
import "database/sql"
// Tx wraps sql.Tx so transactions can be skipped for in-memory repositories
type Tx struct {
tx *sql.Tx
}
func NewTx(tx *sql.Tx) *Tx {
return &Tx{tx: tx}
}
func (tx *Tx) Rollback() error {
if tx.tx == nil {
return nil
}
return tx.tx.Rollback()
}
func (tx *Tx) Commit() error {
if tx.tx == nil {
return nil
}
return tx.tx.Commit()
}
func (tx *Tx) QueryRow(query string, args ...any) *sql.Row {
return tx.tx.QueryRow(query, args...)
}
func (tx *Tx) Query(query string, args ...any) (*sql.Rows, error) {
return tx.tx.Query(query, args...)
}
func (tx *Tx) Exec(query string, args ...any) (sql.Result, error) {
return tx.tx.Exec(query, args...)
}