mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-27 12:53:57 +01:00
Fix some typos and update db transaction demo in backend guideline (#21322)
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
parent
c08e42c47e
commit
56aabf3e8d
1 changed files with 14 additions and 18 deletions
|
@ -67,22 +67,18 @@ Some actions should allow for rollback when database record insertion/update/del
|
||||||
So services must be allowed to create a database transaction. Here is some example,
|
So services must be allowed to create a database transaction. Here is some example,
|
||||||
|
|
||||||
```go
|
```go
|
||||||
// servcies/repository/repo.go
|
// services/repository/repository.go
|
||||||
func CreateXXXX() error {\
|
func CreateXXXX() error {
|
||||||
ctx, committer, err := db.TxContext()
|
return db.WithTx(func(ctx context.Context) error {
|
||||||
if err != nil {
|
e := db.GetEngine(ctx)
|
||||||
return err
|
// do something, if err is returned, it will rollback automatically
|
||||||
}
|
if err := issues.UpdateIssue(ctx, repoID); err != nil {
|
||||||
defer committer.Close()
|
// ...
|
||||||
|
return err
|
||||||
// do something, if return err, it will rollback automatically when `committer.Close()` is invoked.
|
}
|
||||||
if err := issues.UpdateIssue(ctx, repoID); err != nil {
|
// ...
|
||||||
// ...
|
return nil
|
||||||
}
|
})
|
||||||
|
|
||||||
// ......
|
|
||||||
|
|
||||||
return committer.Commit()
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -94,14 +90,14 @@ If the function will be used in the transaction, just let `context.Context` as t
|
||||||
func UpdateIssue(ctx context.Context, repoID int64) error {
|
func UpdateIssue(ctx context.Context, repoID int64) error {
|
||||||
e := db.GetEngine(ctx)
|
e := db.GetEngine(ctx)
|
||||||
|
|
||||||
// ......
|
// ...
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Package Name
|
### Package Name
|
||||||
|
|
||||||
For the top level package, use a plural as package name, i.e. `services`, `models`, for sub packages, use singular,
|
For the top level package, use a plural as package name, i.e. `services`, `models`, for sub packages, use singular,
|
||||||
i.e. `servcies/user`, `models/repository`.
|
i.e. `services/user`, `models/repository`.
|
||||||
|
|
||||||
### Import Alias
|
### Import Alias
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue