Skip to content

Commit cddf245

Browse files
authored
Replace more db.DefaultContext (#27628)
Target #27065
1 parent 7480aac commit cddf245

33 files changed

+99
-85
lines changed

contrib/fixtures/fixture_generation.go

+7-5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package main
66

77
import (
8+
"context"
89
"fmt"
910
"os"
1011
"path/filepath"
@@ -18,7 +19,7 @@ import (
1819

1920
var (
2021
generators = []struct {
21-
gen func() (string, error)
22+
gen func(ctx context.Context) (string, error)
2223
name string
2324
}{
2425
{
@@ -41,27 +42,28 @@ func main() {
4142
fmt.Printf("PrepareTestDatabase: %+v\n", err)
4243
os.Exit(1)
4344
}
45+
ctx := context.Background()
4446
if len(os.Args) == 0 {
4547
for _, r := range os.Args {
46-
if err := generate(r); err != nil {
48+
if err := generate(ctx, r); err != nil {
4749
fmt.Printf("generate '%s': %+v\n", r, err)
4850
os.Exit(1)
4951
}
5052
}
5153
} else {
5254
for _, g := range generators {
53-
if err := generate(g.name); err != nil {
55+
if err := generate(ctx, g.name); err != nil {
5456
fmt.Printf("generate '%s': %+v\n", g.name, err)
5557
os.Exit(1)
5658
}
5759
}
5860
}
5961
}
6062

61-
func generate(name string) error {
63+
func generate(ctx context.Context, name string) error {
6264
for _, g := range generators {
6365
if g.name == name {
64-
data, err := g.gen()
66+
data, err := g.gen(ctx)
6567
if err != nil {
6668
return err
6769
}

models/asymkey/ssh_key_authorized_keys.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func appendAuthorizedKeysToFile(keys ...*PublicKey) error {
115115
}
116116

117117
// RewriteAllPublicKeys removes any authorized key and rewrite all keys from database again.
118-
// Note: db.GetEngine(db.DefaultContext).Iterate does not get latest data after insert/delete, so we have to call this function
118+
// Note: db.GetEngine(ctx).Iterate does not get latest data after insert/delete, so we have to call this function
119119
// outside any session scope independently.
120120
func RewriteAllPublicKeys(ctx context.Context) error {
121121
// Don't rewrite key if internal server

models/asymkey/ssh_key_authorized_principals.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import (
4040
const authorizedPrincipalsFile = "authorized_principals"
4141

4242
// RewriteAllPrincipalKeys removes any authorized principal and rewrite all keys from database again.
43-
// Note: db.GetEngine(db.DefaultContext).Iterate does not get latest data after insert/delete, so we have to call this function
43+
// Note: db.GetEngine(ctx).Iterate does not get latest data after insert/delete, so we have to call this function
4444
// outside any session scope independently.
4545
func RewriteAllPrincipalKeys(ctx context.Context) error {
4646
// Don't rewrite key if internal server

models/fixture_generation.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package models
55

66
import (
7+
"context"
78
"fmt"
89
"strings"
910

@@ -14,23 +15,23 @@ import (
1415

1516
// GetYamlFixturesAccess returns a string containing the contents
1617
// for the access table, as recalculated using repo.RecalculateAccesses()
17-
func GetYamlFixturesAccess() (string, error) {
18+
func GetYamlFixturesAccess(ctx context.Context) (string, error) {
1819
repos := make([]*repo_model.Repository, 0, 50)
19-
if err := db.GetEngine(db.DefaultContext).Find(&repos); err != nil {
20+
if err := db.GetEngine(ctx).Find(&repos); err != nil {
2021
return "", err
2122
}
2223

2324
for _, repo := range repos {
24-
repo.MustOwner(db.DefaultContext)
25-
if err := access_model.RecalculateAccesses(db.DefaultContext, repo); err != nil {
25+
repo.MustOwner(ctx)
26+
if err := access_model.RecalculateAccesses(ctx, repo); err != nil {
2627
return "", err
2728
}
2829
}
2930

3031
var b strings.Builder
3132

3233
accesses := make([]*access_model.Access, 0, 200)
33-
if err := db.GetEngine(db.DefaultContext).OrderBy("user_id, repo_id").Find(&accesses); err != nil {
34+
if err := db.GetEngine(ctx).OrderBy("user_id, repo_id").Find(&accesses); err != nil {
3435
return "", err
3536
}
3637

models/fixture_test.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
package models
55

66
import (
7+
"context"
78
"os"
89
"path/filepath"
910
"testing"
1011

12+
"code.gitea.io/gitea/models/db"
1113
"code.gitea.io/gitea/models/unittest"
1214
"code.gitea.io/gitea/modules/util"
1315

@@ -17,8 +19,8 @@ import (
1719
func TestFixtureGeneration(t *testing.T) {
1820
assert.NoError(t, unittest.PrepareTestDatabase())
1921

20-
test := func(gen func() (string, error), name string) {
21-
expected, err := gen()
22+
test := func(ctx context.Context, gen func(ctx context.Context) (string, error), name string) {
23+
expected, err := gen(ctx)
2224
if !assert.NoError(t, err) {
2325
return
2426
}
@@ -31,5 +33,5 @@ func TestFixtureGeneration(t *testing.T) {
3133
assert.EqualValues(t, expected, data, "Differences detected for %s", p)
3234
}
3335

34-
test(GetYamlFixturesAccess, "access")
36+
test(db.DefaultContext, GetYamlFixturesAccess, "access")
3537
}

models/org.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ func removeOrgUser(ctx context.Context, orgID, userID int64) error {
9797
}
9898

9999
// RemoveOrgUser removes user from given organization.
100-
func RemoveOrgUser(orgID, userID int64) error {
101-
ctx, committer, err := db.TxContext(db.DefaultContext)
100+
func RemoveOrgUser(ctx context.Context, orgID, userID int64) error {
101+
ctx, committer, err := db.TxContext(ctx)
102102
if err != nil {
103103
return err
104104
}

models/org_test.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package models
66
import (
77
"testing"
88

9+
"code.gitea.io/gitea/models/db"
910
"code.gitea.io/gitea/models/organization"
1011
"code.gitea.io/gitea/models/unittest"
1112
user_model "code.gitea.io/gitea/models/user"
@@ -20,15 +21,15 @@ func TestUser_RemoveMember(t *testing.T) {
2021
// remove a user that is a member
2122
unittest.AssertExistsAndLoadBean(t, &organization.OrgUser{UID: 4, OrgID: 3})
2223
prevNumMembers := org.NumMembers
23-
assert.NoError(t, RemoveOrgUser(org.ID, 4))
24+
assert.NoError(t, RemoveOrgUser(db.DefaultContext, org.ID, 4))
2425
unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: 4, OrgID: 3})
2526
org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
2627
assert.Equal(t, prevNumMembers-1, org.NumMembers)
2728

2829
// remove a user that is not a member
2930
unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: 5, OrgID: 3})
3031
prevNumMembers = org.NumMembers
31-
assert.NoError(t, RemoveOrgUser(org.ID, 5))
32+
assert.NoError(t, RemoveOrgUser(db.DefaultContext, org.ID, 5))
3233
unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: 5, OrgID: 3})
3334
org = unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
3435
assert.Equal(t, prevNumMembers, org.NumMembers)
@@ -44,15 +45,15 @@ func TestRemoveOrgUser(t *testing.T) {
4445
if unittest.BeanExists(t, &organization.OrgUser{OrgID: orgID, UID: userID}) {
4546
expectedNumMembers--
4647
}
47-
assert.NoError(t, RemoveOrgUser(orgID, userID))
48+
assert.NoError(t, RemoveOrgUser(db.DefaultContext, orgID, userID))
4849
unittest.AssertNotExistsBean(t, &organization.OrgUser{OrgID: orgID, UID: userID})
4950
org = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: orgID})
5051
assert.EqualValues(t, expectedNumMembers, org.NumMembers)
5152
}
5253
testSuccess(3, 4)
5354
testSuccess(3, 4)
5455

55-
err := RemoveOrgUser(7, 5)
56+
err := RemoveOrgUser(db.DefaultContext, 7, 5)
5657
assert.Error(t, err)
5758
assert.True(t, organization.IsErrLastOrgOwner(err))
5859
unittest.AssertExistsAndLoadBean(t, &organization.OrgUser{OrgID: 7, UID: 5})

models/repo/repo_list.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ func FindUserCodeAccessibleOwnerRepoIDs(ctx context.Context, ownerID int64, user
716716
}
717717

718718
// GetUserRepositories returns a list of repositories of given user.
719-
func GetUserRepositories(opts *SearchRepoOptions) (RepositoryList, int64, error) {
719+
func GetUserRepositories(ctx context.Context, opts *SearchRepoOptions) (RepositoryList, int64, error) {
720720
if len(opts.OrderBy) == 0 {
721721
opts.OrderBy = "updated_unix DESC"
722722
}
@@ -734,7 +734,7 @@ func GetUserRepositories(opts *SearchRepoOptions) (RepositoryList, int64, error)
734734
cond = cond.And(builder.In("lower_name", opts.LowerNames))
735735
}
736736

737-
sess := db.GetEngine(db.DefaultContext)
737+
sess := db.GetEngine(ctx)
738738

739739
count, err := sess.Where(cond).Count(new(Repository))
740740
if err != nil {

models/repo/watch.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,12 @@ func watchRepoMode(ctx context.Context, watch Watch, mode WatchMode) (err error)
107107
}
108108

109109
// WatchRepoMode watch repository in specific mode.
110-
func WatchRepoMode(userID, repoID int64, mode WatchMode) (err error) {
110+
func WatchRepoMode(ctx context.Context, userID, repoID int64, mode WatchMode) (err error) {
111111
var watch Watch
112-
if watch, err = GetWatch(db.DefaultContext, userID, repoID); err != nil {
112+
if watch, err = GetWatch(ctx, userID, repoID); err != nil {
113113
return err
114114
}
115-
return watchRepoMode(db.DefaultContext, watch, mode)
115+
return watchRepoMode(ctx, watch, mode)
116116
}
117117

118118
// WatchRepo watch or unwatch repository.

models/repo/watch_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -122,18 +122,18 @@ func TestWatchRepoMode(t *testing.T) {
122122

123123
unittest.AssertCount(t, &repo_model.Watch{UserID: 12, RepoID: 1}, 0)
124124

125-
assert.NoError(t, repo_model.WatchRepoMode(12, 1, repo_model.WatchModeAuto))
125+
assert.NoError(t, repo_model.WatchRepoMode(db.DefaultContext, 12, 1, repo_model.WatchModeAuto))
126126
unittest.AssertCount(t, &repo_model.Watch{UserID: 12, RepoID: 1}, 1)
127127
unittest.AssertCount(t, &repo_model.Watch{UserID: 12, RepoID: 1, Mode: repo_model.WatchModeAuto}, 1)
128128

129-
assert.NoError(t, repo_model.WatchRepoMode(12, 1, repo_model.WatchModeNormal))
129+
assert.NoError(t, repo_model.WatchRepoMode(db.DefaultContext, 12, 1, repo_model.WatchModeNormal))
130130
unittest.AssertCount(t, &repo_model.Watch{UserID: 12, RepoID: 1}, 1)
131131
unittest.AssertCount(t, &repo_model.Watch{UserID: 12, RepoID: 1, Mode: repo_model.WatchModeNormal}, 1)
132132

133-
assert.NoError(t, repo_model.WatchRepoMode(12, 1, repo_model.WatchModeDont))
133+
assert.NoError(t, repo_model.WatchRepoMode(db.DefaultContext, 12, 1, repo_model.WatchModeDont))
134134
unittest.AssertCount(t, &repo_model.Watch{UserID: 12, RepoID: 1}, 1)
135135
unittest.AssertCount(t, &repo_model.Watch{UserID: 12, RepoID: 1, Mode: repo_model.WatchModeDont}, 1)
136136

137-
assert.NoError(t, repo_model.WatchRepoMode(12, 1, repo_model.WatchModeNone))
137+
assert.NoError(t, repo_model.WatchRepoMode(db.DefaultContext, 12, 1, repo_model.WatchModeNone))
138138
unittest.AssertCount(t, &repo_model.Watch{UserID: 12, RepoID: 1}, 0)
139139
}

models/system/appstate.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ func init() {
2323
}
2424

2525
// SaveAppStateContent saves the app state item to database
26-
func SaveAppStateContent(key, content string) error {
27-
return db.WithTx(db.DefaultContext, func(ctx context.Context) error {
26+
func SaveAppStateContent(ctx context.Context, key, content string) error {
27+
return db.WithTx(ctx, func(ctx context.Context) error {
2828
eng := db.GetEngine(ctx)
2929
// try to update existing row
3030
res, err := eng.Exec("UPDATE app_state SET revision=revision+1, content=? WHERE id=?", content, key)
@@ -43,8 +43,8 @@ func SaveAppStateContent(key, content string) error {
4343
}
4444

4545
// GetAppStateContent gets an app state from database
46-
func GetAppStateContent(key string) (content string, err error) {
47-
e := db.GetEngine(db.DefaultContext)
46+
func GetAppStateContent(ctx context.Context, key string) (content string, err error) {
47+
e := db.GetEngine(ctx)
4848
appState := &AppState{ID: key}
4949
has, err := e.Get(appState)
5050
if err != nil {

modules/system/appstate.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33

44
package system
55

6+
import "context"
7+
68
// StateStore is the interface to get/set app state items
79
type StateStore interface {
8-
Get(item StateItem) error
9-
Set(item StateItem) error
10+
Get(ctx context.Context, item StateItem) error
11+
Set(ctx context.Context, item StateItem) error
1012
}
1113

1214
// StateItem provides the name for a state item. the name will be used to generate filenames, etc

modules/system/appstate_test.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package system
66
import (
77
"testing"
88

9+
"code.gitea.io/gitea/models/db"
910
"code.gitea.io/gitea/models/unittest"
1011

1112
"github.com/stretchr/testify/assert"
@@ -40,25 +41,25 @@ func TestAppStateDB(t *testing.T) {
4041
as := &DBStore{}
4142

4243
item1 := new(testItem1)
43-
assert.NoError(t, as.Get(item1))
44+
assert.NoError(t, as.Get(db.DefaultContext, item1))
4445
assert.Equal(t, "", item1.Val1)
4546
assert.EqualValues(t, 0, item1.Val2)
4647

4748
item1 = new(testItem1)
4849
item1.Val1 = "a"
4950
item1.Val2 = 2
50-
assert.NoError(t, as.Set(item1))
51+
assert.NoError(t, as.Set(db.DefaultContext, item1))
5152

5253
item2 := new(testItem2)
5354
item2.K = "V"
54-
assert.NoError(t, as.Set(item2))
55+
assert.NoError(t, as.Set(db.DefaultContext, item2))
5556

5657
item1 = new(testItem1)
57-
assert.NoError(t, as.Get(item1))
58+
assert.NoError(t, as.Get(db.DefaultContext, item1))
5859
assert.Equal(t, "a", item1.Val1)
5960
assert.EqualValues(t, 2, item1.Val2)
6061

6162
item2 = new(testItem2)
62-
assert.NoError(t, as.Get(item2))
63+
assert.NoError(t, as.Get(db.DefaultContext, item2))
6364
assert.Equal(t, "V", item2.K)
6465
}

modules/system/db.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
package system
55

66
import (
7+
"context"
8+
79
"code.gitea.io/gitea/models/system"
810
"code.gitea.io/gitea/modules/json"
911

@@ -14,8 +16,8 @@ import (
1416
type DBStore struct{}
1517

1618
// Get reads the state item
17-
func (f *DBStore) Get(item StateItem) error {
18-
content, err := system.GetAppStateContent(item.Name())
19+
func (f *DBStore) Get(ctx context.Context, item StateItem) error {
20+
content, err := system.GetAppStateContent(ctx, item.Name())
1921
if err != nil {
2022
return err
2123
}
@@ -26,10 +28,10 @@ func (f *DBStore) Get(item StateItem) error {
2628
}
2729

2830
// Set saves the state item
29-
func (f *DBStore) Set(item StateItem) error {
31+
func (f *DBStore) Set(ctx context.Context, item StateItem) error {
3032
b, err := json.Marshal(item)
3133
if err != nil {
3234
return err
3335
}
34-
return system.SaveAppStateContent(item.Name(), util.BytesToReadOnlyString(b))
36+
return system.SaveAppStateContent(ctx, item.Name(), util.BytesToReadOnlyString(b))
3537
}

0 commit comments

Comments
 (0)