...
1 package db
2
3 import (
4 "fmt"
5 )
6
7
8
9 type RollbackError struct {
10 Err error
11 RollbackErr error
12 }
13
14
15 func (re *RollbackError) Error() string {
16 if re.RollbackErr == nil {
17 return re.Err.Error()
18 }
19 return fmt.Sprintf("%s (also, while rolling back: %s)", re.Err, re.RollbackErr)
20 }
21
22
23
24
25 func rollback(tx Transaction, err error) error {
26 if txErr := tx.Rollback(); txErr != nil {
27 return &RollbackError{
28 Err: err,
29 RollbackErr: txErr,
30 }
31 }
32 return err
33 }
34
View as plain text