@@ -67,22 +67,18 @@ Some actions should allow for rollback when database record insertion/update/del
67
67
So services must be allowed to create a database transaction. Here is some example,
68
68
69
69
``` go
70
- // servcies/repository/repo.go
71
- func CreateXXXX () error {\
72
- ctx , committer , err := db.TxContext ()
73
- if err != nil {
74
- return err
75
- }
76
- defer committer.Close ()
77
-
78
- // do something, if return err, it will rollback automatically when `committer.Close()` is invoked.
79
- if err := issues.UpdateIssue (ctx, repoID); err != nil {
80
- // ...
81
- }
82
-
83
- // ......
84
-
85
- return committer.Commit ()
70
+ // services/repository/repository.go
71
+ func CreateXXXX () error {
72
+ return db.WithTx (func (ctx context.Context ) error {
73
+ e := db.GetEngine (ctx)
74
+ // do something, if err is returned, it will rollback automatically
75
+ if err := issues.UpdateIssue (ctx, repoID); err != nil {
76
+ // ...
77
+ return err
78
+ }
79
+ // ...
80
+ return nil
81
+ })
86
82
}
87
83
```
88
84
@@ -94,14 +90,14 @@ If the function will be used in the transaction, just let `context.Context` as t
94
90
func UpdateIssue (ctx context .Context , repoID int64 ) error {
95
91
e := db.GetEngine (ctx)
96
92
97
- // ......
93
+ // ...
98
94
}
99
95
```
100
96
101
97
### Package Name
102
98
103
99
For the top level package, use a plural as package name, i.e. ` services ` , ` models ` , for sub packages, use singular,
104
- i.e. ` servcies /user` , ` models/repository ` .
100
+ i.e. ` services /user` , ` models/repository ` .
105
101
106
102
### Import Alias
107
103
0 commit comments