Skip to content

Commit 4f32aba

Browse files
lunnywxiaoguang
andauthored
move repository deletion to service layer (#26948)
Co-authored-by: wxiaoguang <[email protected]>
1 parent 3c0c279 commit 4f32aba

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+567
-476
lines changed

models/activities/main_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"code.gitea.io/gitea/models/unittest"
1111

1212
_ "code.gitea.io/gitea/models"
13+
_ "code.gitea.io/gitea/models/actions"
1314
)
1415

1516
func TestMain(m *testing.M) {

models/auth/main_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"code.gitea.io/gitea/models/unittest"
1111

1212
_ "code.gitea.io/gitea/models"
13+
_ "code.gitea.io/gitea/models/actions"
1314
_ "code.gitea.io/gitea/models/activities"
1415
_ "code.gitea.io/gitea/models/auth"
1516
_ "code.gitea.io/gitea/models/perm/access"

models/git/main_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"code.gitea.io/gitea/models/unittest"
1111

1212
_ "code.gitea.io/gitea/models"
13+
_ "code.gitea.io/gitea/models/actions"
14+
_ "code.gitea.io/gitea/models/activities"
1315
)
1416

1517
func TestMain(m *testing.M) {

models/issues/main_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111
"code.gitea.io/gitea/models/unittest"
1212

1313
_ "code.gitea.io/gitea/models"
14+
_ "code.gitea.io/gitea/models/actions"
15+
_ "code.gitea.io/gitea/models/activities"
1416
_ "code.gitea.io/gitea/models/repo"
1517
_ "code.gitea.io/gitea/models/user"
1618

models/main_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"code.gitea.io/gitea/models/unittest"
1313
user_model "code.gitea.io/gitea/models/user"
1414

15+
_ "code.gitea.io/gitea/models/actions"
1516
_ "code.gitea.io/gitea/models/system"
1617

1718
"github.com/stretchr/testify/assert"

models/org_team.go

Lines changed: 0 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -151,85 +151,6 @@ func removeAllRepositories(ctx context.Context, t *organization.Team) (err error
151151
return nil
152152
}
153153

154-
// HasRepository returns true if given repository belong to team.
155-
func HasRepository(t *organization.Team, repoID int64) bool {
156-
return organization.HasTeamRepo(db.DefaultContext, t.OrgID, t.ID, repoID)
157-
}
158-
159-
// removeRepository removes a repository from a team and recalculates access
160-
// Note: Repository shall not be removed from team if it includes all repositories (unless the repository is deleted)
161-
func removeRepository(ctx context.Context, t *organization.Team, repo *repo_model.Repository, recalculate bool) (err error) {
162-
e := db.GetEngine(ctx)
163-
if err = organization.RemoveTeamRepo(ctx, t.ID, repo.ID); err != nil {
164-
return err
165-
}
166-
167-
t.NumRepos--
168-
if _, err = e.ID(t.ID).Cols("num_repos").Update(t); err != nil {
169-
return err
170-
}
171-
172-
// Don't need to recalculate when delete a repository from organization.
173-
if recalculate {
174-
if err = access_model.RecalculateTeamAccesses(ctx, repo, t.ID); err != nil {
175-
return err
176-
}
177-
}
178-
179-
teamUsers, err := organization.GetTeamUsersByTeamID(ctx, t.ID)
180-
if err != nil {
181-
return fmt.Errorf("getTeamUsersByTeamID: %w", err)
182-
}
183-
for _, teamUser := range teamUsers {
184-
has, err := access_model.HasAccess(ctx, teamUser.UID, repo)
185-
if err != nil {
186-
return err
187-
} else if has {
188-
continue
189-
}
190-
191-
if err = repo_model.WatchRepo(ctx, teamUser.UID, repo.ID, false); err != nil {
192-
return err
193-
}
194-
195-
// Remove all IssueWatches a user has subscribed to in the repositories
196-
if err := issues_model.RemoveIssueWatchersByRepoID(ctx, teamUser.UID, repo.ID); err != nil {
197-
return err
198-
}
199-
}
200-
201-
return nil
202-
}
203-
204-
// RemoveRepository removes repository from team of organization.
205-
// If the team shall include all repositories the request is ignored.
206-
func RemoveRepository(t *organization.Team, repoID int64) error {
207-
if !HasRepository(t, repoID) {
208-
return nil
209-
}
210-
211-
if t.IncludesAllRepositories {
212-
return nil
213-
}
214-
215-
repo, err := repo_model.GetRepositoryByID(db.DefaultContext, repoID)
216-
if err != nil {
217-
return err
218-
}
219-
220-
ctx, committer, err := db.TxContext(db.DefaultContext)
221-
if err != nil {
222-
return err
223-
}
224-
defer committer.Close()
225-
226-
if err = removeRepository(ctx, t, repo, true); err != nil {
227-
return err
228-
}
229-
230-
return committer.Commit()
231-
}
232-
233154
// NewTeam creates a record of new team.
234155
// It's caller's responsibility to assign organization ID.
235156
func NewTeam(t *organization.Team) (err error) {

models/org_team_test.go

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -51,36 +51,6 @@ func TestTeam_RemoveMember(t *testing.T) {
5151
assert.True(t, organization.IsErrLastOrgOwner(err))
5252
}
5353

54-
func TestTeam_HasRepository(t *testing.T) {
55-
assert.NoError(t, unittest.PrepareTestDatabase())
56-
57-
test := func(teamID, repoID int64, expected bool) {
58-
team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: teamID})
59-
assert.Equal(t, expected, HasRepository(team, repoID))
60-
}
61-
test(1, 1, false)
62-
test(1, 3, true)
63-
test(1, 5, true)
64-
test(1, unittest.NonexistentID, false)
65-
66-
test(2, 3, true)
67-
test(2, 5, false)
68-
}
69-
70-
func TestTeam_RemoveRepository(t *testing.T) {
71-
assert.NoError(t, unittest.PrepareTestDatabase())
72-
73-
testSuccess := func(teamID, repoID int64) {
74-
team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: teamID})
75-
assert.NoError(t, RemoveRepository(team, repoID))
76-
unittest.AssertNotExistsBean(t, &organization.TeamRepo{TeamID: teamID, RepoID: repoID})
77-
unittest.CheckConsistencyFor(t, &organization.Team{ID: teamID}, &repo_model.Repository{ID: repoID})
78-
}
79-
testSuccess(2, 3)
80-
testSuccess(2, 5)
81-
testSuccess(1, unittest.NonexistentID)
82-
}
83-
8454
func TestIsUsableTeamName(t *testing.T) {
8555
assert.NoError(t, organization.IsUsableTeamName("usable"))
8656
assert.True(t, db.IsErrNameReserved(organization.IsUsableTeamName("new")))

models/organization/main_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"code.gitea.io/gitea/models/unittest"
1111

1212
_ "code.gitea.io/gitea/models"
13+
_ "code.gitea.io/gitea/models/actions"
14+
_ "code.gitea.io/gitea/models/activities"
1315
_ "code.gitea.io/gitea/models/organization"
1416
_ "code.gitea.io/gitea/models/repo"
1517
_ "code.gitea.io/gitea/models/user"

models/packages/package_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
user_model "code.gitea.io/gitea/models/user"
1414

1515
_ "code.gitea.io/gitea/models"
16+
_ "code.gitea.io/gitea/models/actions"
17+
_ "code.gitea.io/gitea/models/activities"
1618

1719
"github.com/stretchr/testify/assert"
1820
)

models/perm/access/main_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"code.gitea.io/gitea/models/unittest"
1111

1212
_ "code.gitea.io/gitea/models"
13+
_ "code.gitea.io/gitea/models/actions"
14+
_ "code.gitea.io/gitea/models/activities"
1315
_ "code.gitea.io/gitea/models/repo"
1416
_ "code.gitea.io/gitea/models/user"
1517
)

0 commit comments

Comments
 (0)