transaction.go
1.2 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package transaction
import "github.com/go-pg/pg/v10"
type TransactionContext struct {
CloseTransactionFlag bool //事务关闭标识
PgDd *pg.DB
PgTx *pg.Tx
}
func (transactionContext *TransactionContext) StartTransaction() error {
if transactionContext.CloseTransactionFlag {
return nil
}
tx, err := transactionContext.PgDd.Begin()
if err != nil {
return err
}
transactionContext.PgTx = tx
return nil
}
func (transactionContext *TransactionContext) CommitTransaction() error {
if transactionContext.CloseTransactionFlag {
return nil
}
err := transactionContext.PgTx.Commit()
return err
}
func (transactionContext *TransactionContext) RollbackTransaction() error {
if transactionContext.CloseTransactionFlag {
return nil
}
err := transactionContext.PgTx.Rollback()
return err
}
// SetTransactionClose
// 在不需要事务的地方可以执行该方法关闭事务处理
// 例如:对象的查询
func (transactionContext *TransactionContext) SetTransactionClose() error {
transactionContext.CloseTransactionFlag = true
return nil
}
func NewPGTransactionContext(pgDd *pg.DB) *TransactionContext {
return &TransactionContext{
PgDd: pgDd,
}
}