zhangqian
2023-11-03 35fdad4e60dd7efab032ba581fd1d12c488370dd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package model
 
import (
    "apsClient/pkg/sqlitex"
    "fmt"
    "github.com/jinzhu/gorm"
)
 
// WithTransaction : var funcs []func(db *gorm.DB) error,把相关函数添加进去
func WithTransaction(fns ...func(*gorm.DB) error) (err error) {
    tx := sqlitex.GetDB().Begin()
    defer func() {
        if r := recover(); r != nil {
            tx.Rollback()
            err = fmt.Errorf("%v", err)
        }
    }()
 
    for _, fn := range fns {
        err = fn(tx)
        if err != nil {
            tx.Rollback()
            return
        }
    }
    err = tx.Commit().Error
    return
}