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
29
30
| package model
|
| import (
| "gorm.io/gorm"
| "srm/global"
| )
|
| func WithTransaction(fns ...func(*gorm.DB) error) error {
| var err error
| tx := global.GVA_DB.Begin()
| defer func() {
| if r := recover(); r != nil {
| tx.Rollback()
| return
| } else if err == nil {
| tx.Commit()
| return
| }
| }()
|
| for _, fn := range fns {
| err = fn(tx)
| if err != nil {
| tx.Rollback()
| return err
| }
| }
|
| return nil
| }
|
|