Skip to content

Commit 11c0e38

Browse files
committed
Fix some dependent problems
1 parent 39da526 commit 11c0e38

File tree

8 files changed

+70
-68
lines changed

8 files changed

+70
-68
lines changed

models/activities/action.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ func activityQueryCondition(ctx context.Context, opts GetFeedsOptions) (builder.
563563
}
564564

565565
if opts.RequestedTeam != nil {
566-
env := organization.OrgFromUser(opts.RequestedUser).AccessibleTeamReposEnv(ctx, opts.RequestedTeam)
566+
env := repo_model.AccessibleTeamReposEnv(ctx, organization.OrgFromUser(opts.RequestedUser), opts.RequestedTeam)
567567
teamRepoIDs, err := env.RepoIDs(1, opts.RequestedUser.NumRepos)
568568
if err != nil {
569569
return nil, fmt.Errorf("GetTeamRepositories: %w", err)

models/org.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func RemoveOrgUser(ctx context.Context, org *organization.Organization, user *us
6060
}
6161

6262
// Delete all repository accesses and unwatch them.
63-
env, err := organization.AccessibleReposEnv(ctx, org, user.ID)
63+
env, err := repo_model.AccessibleReposEnv(ctx, org, user.ID)
6464
if err != nil {
6565
return fmt.Errorf("AccessibleReposEnv: %w", err)
6666
}

models/organization/org.go

Lines changed: 5 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@ import (
99
"fmt"
1010
"strings"
1111

12-
actions_model "code.gitea.io/gitea/models/actions"
1312
"code.gitea.io/gitea/models/db"
1413
"code.gitea.io/gitea/models/perm"
15-
secret_model "code.gitea.io/gitea/models/secret"
1614
"code.gitea.io/gitea/models/unit"
1715
user_model "code.gitea.io/gitea/models/user"
1816
"code.gitea.io/gitea/modules/log"
@@ -406,33 +404,6 @@ func GetOrgByName(ctx context.Context, name string) (*Organization, error) {
406404
return u, nil
407405
}
408406

409-
// DeleteOrganization deletes models associated to an organization.
410-
func DeleteOrganization(ctx context.Context, org *Organization) error {
411-
if org.Type != user_model.UserTypeOrganization {
412-
return fmt.Errorf("%s is a user not an organization", org.Name)
413-
}
414-
415-
if err := db.DeleteBeans(ctx,
416-
&Team{OrgID: org.ID},
417-
&OrgUser{OrgID: org.ID},
418-
&TeamUser{OrgID: org.ID},
419-
&TeamUnit{OrgID: org.ID},
420-
&TeamInvite{OrgID: org.ID},
421-
&secret_model.Secret{OwnerID: org.ID},
422-
&user_model.Blocking{BlockerID: org.ID},
423-
&actions_model.ActionRunner{OwnerID: org.ID},
424-
&actions_model.ActionRunnerToken{OwnerID: org.ID},
425-
); err != nil {
426-
return fmt.Errorf("DeleteBeans: %w", err)
427-
}
428-
429-
if _, err := db.GetEngine(ctx).ID(org.ID).Delete(new(user_model.User)); err != nil {
430-
return fmt.Errorf("Delete: %w", err)
431-
}
432-
433-
return nil
434-
}
435-
436407
// GetOrgUserMaxAuthorizeLevel returns highest authorize level of user in an organization
437408
func (org *Organization) GetOrgUserMaxAuthorizeLevel(ctx context.Context, uid int64) (perm.AccessMode, error) {
438409
var authorize perm.AccessMode
@@ -603,7 +574,9 @@ func RemoveOrgRepo(ctx context.Context, orgID, repoID int64) error {
603574
return err
604575
}
605576

606-
func (org *Organization) getUserTeams(ctx context.Context, userID int64, cols ...string) ([]*Team, error) {
577+
// GetUserTeams returns all teams that belong to user,
578+
// and that the user has joined.
579+
func (org *Organization) GetUserTeams(ctx context.Context, userID int64, cols ...string) ([]*Team, error) {
607580
teams := make([]*Team, 0, org.NumTeams)
608581
return teams, db.GetEngine(ctx).
609582
Where("`team_user`.org_id = ?", org.ID).
@@ -615,7 +588,8 @@ func (org *Organization) getUserTeams(ctx context.Context, userID int64, cols ..
615588
Find(&teams)
616589
}
617590

618-
func (org *Organization) getUserTeamIDs(ctx context.Context, userID int64) ([]int64, error) {
591+
// GetUserTeamIDs returns of all team IDs of the organization that user is member of.
592+
func (org *Organization) GetUserTeamIDs(ctx context.Context, userID int64) ([]int64, error) {
619593
teamIDs := make([]int64, 0, org.NumTeams)
620594
return teamIDs, db.GetEngine(ctx).
621595
Table("team").
@@ -639,14 +613,3 @@ func getUserTeamIDsQueryBuilder(orgID, userID int64) *builder.Builder {
639613
func (org *Organization) TeamsWithAccessToRepo(ctx context.Context, repoID int64, mode perm.AccessMode) ([]*Team, error) {
640614
return GetTeamsWithAccessToRepo(ctx, org.ID, repoID, mode)
641615
}
642-
643-
// GetUserTeamIDs returns of all team IDs of the organization that user is member of.
644-
func (org *Organization) GetUserTeamIDs(ctx context.Context, userID int64) ([]int64, error) {
645-
return org.getUserTeamIDs(ctx, userID)
646-
}
647-
648-
// GetUserTeams returns all teams that belong to user,
649-
// and that the user has joined.
650-
func (org *Organization) GetUserTeams(ctx context.Context, userID int64) ([]*Team, error) {
651-
return org.getUserTeams(ctx, userID)
652-
}

models/organization/org_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ func TestAccessibleReposEnv_CountRepos(t *testing.T) {
318318
assert.NoError(t, unittest.PrepareTestDatabase())
319319
org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
320320
testSuccess := func(userID, expectedCount int64) {
321-
env, err := organization.AccessibleReposEnv(db.DefaultContext, org, userID)
321+
env, err := repo_model.AccessibleReposEnv(db.DefaultContext, org, userID)
322322
assert.NoError(t, err)
323323
count, err := env.CountRepos()
324324
assert.NoError(t, err)
@@ -332,7 +332,7 @@ func TestAccessibleReposEnv_RepoIDs(t *testing.T) {
332332
assert.NoError(t, unittest.PrepareTestDatabase())
333333
org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
334334
testSuccess := func(userID int64, expectedRepoIDs []int64) {
335-
env, err := organization.AccessibleReposEnv(db.DefaultContext, org, userID)
335+
env, err := repo_model.AccessibleReposEnv(db.DefaultContext, org, userID)
336336
assert.NoError(t, err)
337337
repoIDs, err := env.RepoIDs(1, 100)
338338
assert.NoError(t, err)
@@ -346,7 +346,7 @@ func TestAccessibleReposEnv_Repos(t *testing.T) {
346346
assert.NoError(t, unittest.PrepareTestDatabase())
347347
org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
348348
testSuccess := func(userID int64, expectedRepoIDs []int64) {
349-
env, err := organization.AccessibleReposEnv(db.DefaultContext, org, userID)
349+
env, err := repo_model.AccessibleReposEnv(db.DefaultContext, org, userID)
350350
assert.NoError(t, err)
351351
repos, err := env.Repos(1, 100)
352352
assert.NoError(t, err)
@@ -365,7 +365,7 @@ func TestAccessibleReposEnv_MirrorRepos(t *testing.T) {
365365
assert.NoError(t, unittest.PrepareTestDatabase())
366366
org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
367367
testSuccess := func(userID int64, expectedRepoIDs []int64) {
368-
env, err := organization.AccessibleReposEnv(db.DefaultContext, org, userID)
368+
env, err := repo_model.AccessibleReposEnv(db.DefaultContext, org, userID)
369369
assert.NoError(t, err)
370370
repos, err := env.MirrorRepos()
371371
assert.NoError(t, err)

models/organization/team_test.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"code.gitea.io/gitea/models/db"
1010
"code.gitea.io/gitea/models/organization"
11+
repo_model "code.gitea.io/gitea/models/repo"
1112
"code.gitea.io/gitea/models/unittest"
1213

1314
"github.com/stretchr/testify/assert"
@@ -42,9 +43,12 @@ func TestTeam_GetRepositories(t *testing.T) {
4243

4344
test := func(teamID int64) {
4445
team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: teamID})
45-
assert.NoError(t, team.LoadRepositories(db.DefaultContext))
46-
assert.Len(t, team.Repos, team.NumRepos)
47-
for _, repo := range team.Repos {
46+
repos, err := repo_model.GetTeamRepositories(db.DefaultContext, &repo_model.SearchTeamRepoOptions{
47+
TeamID: team.ID,
48+
})
49+
assert.NoError(t, err)
50+
assert.Len(t, repos, team.NumRepos)
51+
for _, repo := range repos {
4852
unittest.AssertExistsAndLoadBean(t, &organization.TeamRepo{TeamID: teamID, RepoID: repo.ID})
4953
}
5054
}

models/repo/org_repo.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func AccessibleReposEnv(ctx context.Context, org *org_model.Organization, userID
7878
user = u
7979
}
8080

81-
teamIDs, err := org.getUserTeamIDs(ctx, userID)
81+
teamIDs, err := org.GetUserTeamIDs(ctx, userID)
8282
if err != nil {
8383
return nil, err
8484
}
@@ -128,7 +128,7 @@ func (env *accessibleReposEnv) CountRepos() (int64, error) {
128128
Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id").
129129
Where(env.cond()).
130130
Distinct("`repository`.id").
131-
Count(&repo_model.Repository{})
131+
Count(&Repository{})
132132
if err != nil {
133133
return 0, fmt.Errorf("count user repositories in organization: %w", err)
134134
}
@@ -152,13 +152,13 @@ func (env *accessibleReposEnv) RepoIDs(page, pageSize int) ([]int64, error) {
152152
Find(&repoIDs)
153153
}
154154

155-
func (env *accessibleReposEnv) Repos(page, pageSize int) (repo_model.RepositoryList, error) {
155+
func (env *accessibleReposEnv) Repos(page, pageSize int) (RepositoryList, error) {
156156
repoIDs, err := env.RepoIDs(page, pageSize)
157157
if err != nil {
158158
return nil, fmt.Errorf("GetUserRepositoryIDs: %w", err)
159159
}
160160

161-
repos := make([]*repo_model.Repository, 0, len(repoIDs))
161+
repos := make([]*Repository, 0, len(repoIDs))
162162
if len(repoIDs) == 0 {
163163
return repos, nil
164164
}
@@ -181,13 +181,13 @@ func (env *accessibleReposEnv) MirrorRepoIDs() ([]int64, error) {
181181
Find(&repoIDs)
182182
}
183183

184-
func (env *accessibleReposEnv) MirrorRepos() (repo_model.RepositoryList, error) {
184+
func (env *accessibleReposEnv) MirrorRepos() (RepositoryList, error) {
185185
repoIDs, err := env.MirrorRepoIDs()
186186
if err != nil {
187187
return nil, fmt.Errorf("MirrorRepoIDs: %w", err)
188188
}
189189

190-
repos := make([]*repo_model.Repository, 0, len(repoIDs))
190+
repos := make([]*Repository, 0, len(repoIDs))
191191
if len(repoIDs) == 0 {
192192
return repos, nil
193193
}

services/org/org.go

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,45 @@ import (
88
"fmt"
99

1010
"code.gitea.io/gitea/models"
11+
actions_model "code.gitea.io/gitea/models/actions"
1112
"code.gitea.io/gitea/models/db"
1213
org_model "code.gitea.io/gitea/models/organization"
1314
packages_model "code.gitea.io/gitea/models/packages"
1415
repo_model "code.gitea.io/gitea/models/repo"
16+
secret_model "code.gitea.io/gitea/models/secret"
1517
user_model "code.gitea.io/gitea/models/user"
1618
"code.gitea.io/gitea/modules/storage"
1719
"code.gitea.io/gitea/modules/util"
1820
repo_service "code.gitea.io/gitea/services/repository"
1921
)
2022

23+
// deleteOrganization deletes models associated to an organization.
24+
func deleteOrganization(ctx context.Context, org *org_model.Organization) error {
25+
if org.Type != user_model.UserTypeOrganization {
26+
return fmt.Errorf("%s is a user not an organization", org.Name)
27+
}
28+
29+
if err := db.DeleteBeans(ctx,
30+
&org_model.Team{OrgID: org.ID},
31+
&org_model.OrgUser{OrgID: org.ID},
32+
&org_model.TeamUser{OrgID: org.ID},
33+
&org_model.TeamUnit{OrgID: org.ID},
34+
&org_model.TeamInvite{OrgID: org.ID},
35+
&secret_model.Secret{OwnerID: org.ID},
36+
&user_model.Blocking{BlockerID: org.ID},
37+
&actions_model.ActionRunner{OwnerID: org.ID},
38+
&actions_model.ActionRunnerToken{OwnerID: org.ID},
39+
); err != nil {
40+
return fmt.Errorf("DeleteBeans: %w", err)
41+
}
42+
43+
if _, err := db.GetEngine(ctx).ID(org.ID).Delete(new(user_model.User)); err != nil {
44+
return fmt.Errorf("Delete: %w", err)
45+
}
46+
47+
return nil
48+
}
49+
2150
// DeleteOrganization completely and permanently deletes everything of organization.
2251
func DeleteOrganization(ctx context.Context, org *org_model.Organization, purge bool) error {
2352
ctx, committer, err := db.TxContext(ctx)
@@ -48,7 +77,7 @@ func DeleteOrganization(ctx context.Context, org *org_model.Organization, purge
4877
return models.ErrUserOwnPackages{UID: org.ID}
4978
}
5079

51-
if err := org_model.DeleteOrganization(ctx, org); err != nil {
80+
if err := deleteOrganization(ctx, org); err != nil {
5281
return fmt.Errorf("DeleteOrganization: %w", err)
5382
}
5483

services/repository/create_test.go

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright 2023 The Gitea Authors. All rights reserved.
22
// SPDX-License-Identifier: MIT
33

4-
package repository
4+
package repository_test
55

66
import (
77
"fmt"
@@ -11,9 +11,12 @@ import (
1111
"code.gitea.io/gitea/models/db"
1212
"code.gitea.io/gitea/models/organization"
1313
"code.gitea.io/gitea/models/perm"
14+
repo_model "code.gitea.io/gitea/models/repo"
1415
"code.gitea.io/gitea/models/unittest"
1516
user_model "code.gitea.io/gitea/models/user"
1617
"code.gitea.io/gitea/modules/structs"
18+
org_service "code.gitea.io/gitea/services/org"
19+
repo_service "code.gitea.io/gitea/services/repository"
1720

1821
"github.com/stretchr/testify/assert"
1922
)
@@ -23,12 +26,15 @@ func TestIncludesAllRepositoriesTeams(t *testing.T) {
2326

2427
testTeamRepositories := func(teamID int64, repoIDs []int64) {
2528
team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: teamID})
26-
assert.NoError(t, team.LoadRepositories(db.DefaultContext), "%s: GetRepositories", team.Name)
27-
assert.Len(t, team.Repos, team.NumRepos, "%s: len repo", team.Name)
28-
assert.Len(t, team.Repos, len(repoIDs), "%s: repo count", team.Name)
29+
repos, err := repo_model.GetTeamRepositories(db.DefaultContext, &repo_model.SearchTeamRepoOptions{
30+
TeamID: team.ID,
31+
})
32+
assert.NoError(t, err, "%s: GetRepositories", team.Name)
33+
assert.Len(t, repos, team.NumRepos, "%s: len repo", team.Name)
34+
assert.Len(t, repos, len(repoIDs), "%s: repo count", team.Name)
2935
for i, rid := range repoIDs {
3036
if rid > 0 {
31-
assert.True(t, HasRepository(db.DefaultContext, team, rid), "%s: HasRepository(%d) %d", rid, i)
37+
assert.True(t, repo_service.HasRepository(db.DefaultContext, team, rid), "%s: HasRepository(%d) %d", rid, i)
3238
}
3339
}
3440
}
@@ -54,7 +60,7 @@ func TestIncludesAllRepositoriesTeams(t *testing.T) {
5460
// Create repos.
5561
repoIDs := make([]int64, 0)
5662
for i := 0; i < 3; i++ {
57-
r, err := CreateRepositoryDirectly(db.DefaultContext, user, org.AsUser(), CreateRepoOptions{Name: fmt.Sprintf("repo-%d", i)})
63+
r, err := repo_service.CreateRepositoryDirectly(db.DefaultContext, user, org.AsUser(), repo_service.CreateRepoOptions{Name: fmt.Sprintf("repo-%d", i)})
5864
assert.NoError(t, err, "CreateRepository %d", i)
5965
if r != nil {
6066
repoIDs = append(repoIDs, r.ID)
@@ -116,7 +122,7 @@ func TestIncludesAllRepositoriesTeams(t *testing.T) {
116122
}
117123

118124
// Create repo and check teams repositories.
119-
r, err := CreateRepositoryDirectly(db.DefaultContext, user, org.AsUser(), CreateRepoOptions{Name: "repo-last"})
125+
r, err := repo_service.CreateRepositoryDirectly(db.DefaultContext, user, org.AsUser(), repo_service.CreateRepoOptions{Name: "repo-last"})
120126
assert.NoError(t, err, "CreateRepository last")
121127
if r != nil {
122128
repoIDs = append(repoIDs, r.ID)
@@ -129,7 +135,7 @@ func TestIncludesAllRepositoriesTeams(t *testing.T) {
129135
}
130136

131137
// Remove repo and check teams repositories.
132-
assert.NoError(t, DeleteRepositoryDirectly(db.DefaultContext, user, repoIDs[0]), "DeleteRepository")
138+
assert.NoError(t, repo_service.DeleteRepositoryDirectly(db.DefaultContext, user, repoIDs[0]), "DeleteRepository")
133139
teamRepos[0] = repoIDs[1:]
134140
teamRepos[1] = repoIDs[1:]
135141
teamRepos[3] = repoIDs[1:3]
@@ -141,8 +147,8 @@ func TestIncludesAllRepositoriesTeams(t *testing.T) {
141147
// Wipe created items.
142148
for i, rid := range repoIDs {
143149
if i > 0 { // first repo already deleted.
144-
assert.NoError(t, DeleteRepositoryDirectly(db.DefaultContext, user, rid), "DeleteRepository %d", i)
150+
assert.NoError(t, repo_service.DeleteRepositoryDirectly(db.DefaultContext, user, rid), "DeleteRepository %d", i)
145151
}
146152
}
147-
assert.NoError(t, organization.DeleteOrganization(db.DefaultContext, org), "DeleteOrganization")
153+
assert.NoError(t, org_service.DeleteOrganization(db.DefaultContext, org, false), "DeleteOrganization")
148154
}

0 commit comments

Comments
 (0)