diff options
Diffstat (limited to 'src/fiinha.go')
| -rw-r--r-- | src/fiinha.go | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/src/fiinha.go b/src/fiinha.go index 4461462..fe2fa6a 100644 --- a/src/fiinha.go +++ b/src/fiinha.go @@ -163,6 +163,38 @@ type IQueue interface{ +func tryRollback(tx *sql.Tx, err error) error { + rollbackErr := tx.Rollback() + if rollbackErr != nil { + return fmt.Errorf( + rollbackErrorFmt, + rollbackErr, + err, + ) + } + + return err +} + +func inTx(db *sql.DB, fn func(*sql.Tx) error) error { + tx, err := db.Begin() + if err != nil { + return err + } + + err = fn(tx) + if err != nil { + return tryRollback(tx, err) + } + + err = tx.Commit() + if err != nil { + return tryRollback(tx, err) + } + + return nil +} + func serialized[A any, B any](callback func(...A) B) (func(...A) B, func()) { in := make(chan []A) out := make(chan B) @@ -210,38 +242,6 @@ func execSerialized(query string, db *sql.DB) (func(...any) error, func()) { }) } -func tryRollback(tx *sql.Tx, err error) error { - rollbackErr := tx.Rollback() - if rollbackErr != nil { - return fmt.Errorf( - rollbackErrorFmt, - rollbackErr, - err, - ) - } - - return err -} - -func inTx(db *sql.DB, fn func(*sql.Tx) error) error { - tx, err := db.Begin() - if err != nil { - return err - } - - err = fn(tx) - if err != nil { - return tryRollback(tx, err) - } - - err = tx.Commit() - if err != nil { - return tryRollback(tx, err) - } - - return nil -} - func createTablesSQL(prefix string) queryT { const tmpl_write = ` CREATE TABLE IF NOT EXISTS "%s_payloads" ( |
