Skip to content

Commit 719f55c

Browse files
committed
Adjustment functions sequence
1 parent 15ff9cd commit 719f55c

File tree

1 file changed

+74
-74
lines changed

1 file changed

+74
-74
lines changed

services/org/team.go

Lines changed: 74 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,67 @@ func UpdateTeam(ctx context.Context, t *organization.Team, authChanged, includeA
163163
return committer.Commit()
164164
}
165165

166+
// DeleteTeam deletes given team.
167+
// It's caller's responsibility to assign organization ID.
168+
func DeleteTeam(ctx context.Context, t *organization.Team) error {
169+
ctx, committer, err := db.TxContext(ctx)
170+
if err != nil {
171+
return err
172+
}
173+
defer committer.Close()
174+
175+
if err := t.LoadRepositories(ctx); err != nil {
176+
return err
177+
}
178+
179+
if err := t.LoadMembers(ctx); err != nil {
180+
return err
181+
}
182+
183+
// update branch protections
184+
{
185+
protections := make([]*git_model.ProtectedBranch, 0, 10)
186+
err := db.GetEngine(ctx).In("repo_id",
187+
builder.Select("id").From("repository").Where(builder.Eq{"owner_id": t.OrgID})).
188+
Find(&protections)
189+
if err != nil {
190+
return fmt.Errorf("findProtectedBranches: %w", err)
191+
}
192+
for _, p := range protections {
193+
if err := git_model.RemoveTeamIDFromProtectedBranch(ctx, p, t.ID); err != nil {
194+
return err
195+
}
196+
}
197+
}
198+
199+
if err := repo_service.RemoveAllRepositoriesFromTeam(ctx, t); err != nil {
200+
return err
201+
}
202+
203+
if err := db.DeleteBeans(ctx,
204+
&organization.Team{ID: t.ID},
205+
&organization.TeamUser{OrgID: t.OrgID, TeamID: t.ID},
206+
&organization.TeamUnit{TeamID: t.ID},
207+
&organization.TeamInvite{TeamID: t.ID},
208+
&issues_model.Review{Type: issues_model.ReviewTypeRequest, ReviewerTeamID: t.ID}, // batch delete the binding relationship between team and PR (request review from team)
209+
); err != nil {
210+
return err
211+
}
212+
213+
for _, tm := range t.Members {
214+
if err := removeInvalidOrgUser(ctx, t.OrgID, tm); err != nil {
215+
return err
216+
}
217+
}
218+
219+
// Update organization number of teams.
220+
if _, err := db.Exec(ctx, "UPDATE `user` SET num_teams=num_teams-1 WHERE id=?", t.OrgID); err != nil {
221+
return err
222+
}
223+
224+
return committer.Commit()
225+
}
226+
166227
// AddTeamMember adds new membership of given team to given organization,
167228
// the user will have membership to given organization automatically when needed.
168229
func AddTeamMember(ctx context.Context, team *organization.Team, user *user_model.User) error {
@@ -257,80 +318,6 @@ func AddTeamMember(ctx context.Context, team *organization.Team, user *user_mode
257318
return nil
258319
}
259320

260-
// DeleteTeam deletes given team.
261-
// It's caller's responsibility to assign organization ID.
262-
func DeleteTeam(ctx context.Context, t *organization.Team) error {
263-
ctx, committer, err := db.TxContext(ctx)
264-
if err != nil {
265-
return err
266-
}
267-
defer committer.Close()
268-
269-
if err := t.LoadRepositories(ctx); err != nil {
270-
return err
271-
}
272-
273-
if err := t.LoadMembers(ctx); err != nil {
274-
return err
275-
}
276-
277-
// update branch protections
278-
{
279-
protections := make([]*git_model.ProtectedBranch, 0, 10)
280-
err := db.GetEngine(ctx).In("repo_id",
281-
builder.Select("id").From("repository").Where(builder.Eq{"owner_id": t.OrgID})).
282-
Find(&protections)
283-
if err != nil {
284-
return fmt.Errorf("findProtectedBranches: %w", err)
285-
}
286-
for _, p := range protections {
287-
if err := git_model.RemoveTeamIDFromProtectedBranch(ctx, p, t.ID); err != nil {
288-
return err
289-
}
290-
}
291-
}
292-
293-
if err := repo_service.RemoveAllRepositoriesFromTeam(ctx, t); err != nil {
294-
return err
295-
}
296-
297-
if err := db.DeleteBeans(ctx,
298-
&organization.Team{ID: t.ID},
299-
&organization.TeamUser{OrgID: t.OrgID, TeamID: t.ID},
300-
&organization.TeamUnit{TeamID: t.ID},
301-
&organization.TeamInvite{TeamID: t.ID},
302-
&issues_model.Review{Type: issues_model.ReviewTypeRequest, ReviewerTeamID: t.ID}, // batch delete the binding relationship between team and PR (request review from team)
303-
); err != nil {
304-
return err
305-
}
306-
307-
for _, tm := range t.Members {
308-
if err := removeInvalidOrgUser(ctx, t.OrgID, tm); err != nil {
309-
return err
310-
}
311-
}
312-
313-
// Update organization number of teams.
314-
if _, err := db.Exec(ctx, "UPDATE `user` SET num_teams=num_teams-1 WHERE id=?", t.OrgID); err != nil {
315-
return err
316-
}
317-
318-
return committer.Commit()
319-
}
320-
321-
// RemoveTeamMember removes member from given team of given organization.
322-
func RemoveTeamMember(ctx context.Context, team *organization.Team, user *user_model.User) error {
323-
ctx, committer, err := db.TxContext(ctx)
324-
if err != nil {
325-
return err
326-
}
327-
defer committer.Close()
328-
if err := removeTeamMember(ctx, team, user); err != nil {
329-
return err
330-
}
331-
return committer.Commit()
332-
}
333-
334321
func removeTeamMember(ctx context.Context, team *organization.Team, user *user_model.User) error {
335322
e := db.GetEngine(ctx)
336323
isMember, err := organization.IsTeamMember(ctx, team.OrgID, team.ID, user.ID)
@@ -399,3 +386,16 @@ func removeInvalidOrgUser(ctx context.Context, orgID int64, user *user_model.Use
399386
}
400387
return nil
401388
}
389+
390+
// RemoveTeamMember removes member from given team of given organization.
391+
func RemoveTeamMember(ctx context.Context, team *organization.Team, user *user_model.User) error {
392+
ctx, committer, err := db.TxContext(ctx)
393+
if err != nil {
394+
return err
395+
}
396+
defer committer.Close()
397+
if err := removeTeamMember(ctx, team, user); err != nil {
398+
return err
399+
}
400+
return committer.Commit()
401+
}

0 commit comments

Comments
 (0)