Skip to content

Commit 7605710

Browse files
ethantkoeniglunny
authored andcommitted
Remove unnecessary loads in org_team (#1035)
1 parent f1ab906 commit 7605710

File tree

3 files changed

+39
-51
lines changed

3 files changed

+39
-51
lines changed

models/org.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ func RemoveOrgUser(orgID, userID int64) error {
517517
return err
518518
}
519519
for _, t := range teams {
520-
if err = removeTeamMember(sess, org.ID, t.ID, userID); err != nil {
520+
if err = removeTeamMember(sess, t, userID); err != nil {
521521
return err
522522
}
523523
}

models/org_team.go

Lines changed: 35 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ func (t *Team) GetMembers() (err error) {
5959
// AddMember adds new membership of the team to the organization,
6060
// the user will have membership to the organization automatically when needed.
6161
func (t *Team) AddMember(userID int64) error {
62-
return AddTeamMember(t.OrgID, t.ID, userID)
62+
return AddTeamMember(t, userID)
6363
}
6464

6565
// RemoveMember removes member from team of organization.
6666
func (t *Team) RemoveMember(userID int64) error {
67-
return RemoveTeamMember(t.OrgID, t.ID, userID)
67+
return RemoveTeamMember(t, userID)
6868
}
6969

7070
func (t *Team) hasRepository(e Engine, repoID int64) bool {
@@ -443,113 +443,101 @@ func GetUserTeams(orgID, userID int64) ([]*Team, error) {
443443

444444
// AddTeamMember adds new membership of given team to given organization,
445445
// the user will have membership to given organization automatically when needed.
446-
func AddTeamMember(orgID, teamID, userID int64) error {
447-
if IsTeamMember(orgID, teamID, userID) {
446+
func AddTeamMember(team *Team, userID int64) error {
447+
if IsTeamMember(team.OrgID, team.ID, userID) {
448448
return nil
449449
}
450450

451-
if err := AddOrgUser(orgID, userID); err != nil {
451+
if err := AddOrgUser(team.OrgID, userID); err != nil {
452452
return err
453453
}
454454

455455
// Get team and its repositories.
456-
t, err := GetTeamByID(teamID)
457-
if err != nil {
458-
return err
459-
}
460-
t.NumMembers++
456+
team.NumMembers++
461457

462-
if err = t.GetRepositories(); err != nil {
458+
if err := team.GetRepositories(); err != nil {
463459
return err
464460
}
465461

466462
sess := x.NewSession()
467463
defer sessionRelease(sess)
468-
if err = sess.Begin(); err != nil {
464+
if err := sess.Begin(); err != nil {
469465
return err
470466
}
471467

472-
tu := &TeamUser{
468+
if _, err := sess.Insert(&TeamUser{
473469
UID: userID,
474-
OrgID: orgID,
475-
TeamID: teamID,
476-
}
477-
if _, err = sess.Insert(tu); err != nil {
470+
OrgID: team.OrgID,
471+
TeamID: team.ID,
472+
}); err != nil {
478473
return err
479-
} else if _, err = sess.Id(t.ID).Update(t); err != nil {
474+
} else if _, err := sess.Id(team.ID).Update(team); err != nil {
480475
return err
481476
}
482477

483478
// Give access to team repositories.
484-
for _, repo := range t.Repos {
485-
if err = repo.recalculateTeamAccesses(sess, 0); err != nil {
479+
for _, repo := range team.Repos {
480+
if err := repo.recalculateTeamAccesses(sess, 0); err != nil {
486481
return err
487482
}
488483
}
489484

490485
// We make sure it exists before.
491486
ou := new(OrgUser)
492-
if _, err = sess.
487+
if _, err := sess.
493488
Where("uid = ?", userID).
494-
And("org_id = ?", orgID).
489+
And("org_id = ?", team.OrgID).
495490
Get(ou); err != nil {
496491
return err
497492
}
498493
ou.NumTeams++
499-
if t.IsOwnerTeam() {
494+
if team.IsOwnerTeam() {
500495
ou.IsOwner = true
501496
}
502-
if _, err = sess.Id(ou.ID).AllCols().Update(ou); err != nil {
497+
if _, err := sess.Id(ou.ID).AllCols().Update(ou); err != nil {
503498
return err
504499
}
505500

506501
return sess.Commit()
507502
}
508503

509-
func removeTeamMember(e Engine, orgID, teamID, userID int64) error {
510-
if !isTeamMember(e, orgID, teamID, userID) {
504+
func removeTeamMember(e Engine, team *Team, userID int64) error {
505+
if !isTeamMember(e, team.OrgID, team.ID, userID) {
511506
return nil
512507
}
513508

514-
// Get team and its repositories.
515-
t, err := getTeamByID(e, teamID)
516-
if err != nil {
517-
return err
518-
}
519-
520509
// Check if the user to delete is the last member in owner team.
521-
if t.IsOwnerTeam() && t.NumMembers == 1 {
510+
if team.IsOwnerTeam() && team.NumMembers == 1 {
522511
return ErrLastOrgOwner{UID: userID}
523512
}
524513

525-
t.NumMembers--
514+
team.NumMembers--
526515

527-
if err = t.getRepositories(e); err != nil {
516+
if err := team.getRepositories(e); err != nil {
528517
return err
529518
}
530519

531520
// Get organization.
532-
org, err := getUserByID(e, orgID)
521+
org, err := getUserByID(e, team.OrgID)
533522
if err != nil {
534523
return err
535524
}
536525

537-
tu := &TeamUser{
526+
if _, err := e.Delete(&TeamUser{
538527
UID: userID,
539-
OrgID: orgID,
540-
TeamID: teamID,
541-
}
542-
if _, err := e.Delete(tu); err != nil {
528+
OrgID: team.OrgID,
529+
TeamID: team.ID,
530+
}); err != nil {
543531
return err
544532
} else if _, err = e.
545-
Id(t.ID).
533+
Id(team.ID).
546534
AllCols().
547-
Update(t); err != nil {
535+
Update(team); err != nil {
548536
return err
549537
}
550538

551539
// Delete access to team repositories.
552-
for _, repo := range t.Repos {
540+
for _, repo := range team.Repos {
553541
if err = repo.recalculateTeamAccesses(e, 0); err != nil {
554542
return err
555543
}
@@ -565,7 +553,7 @@ func removeTeamMember(e Engine, orgID, teamID, userID int64) error {
565553
return err
566554
}
567555
ou.NumTeams--
568-
if t.IsOwnerTeam() {
556+
if team.IsOwnerTeam() {
569557
ou.IsOwner = false
570558
}
571559
if _, err = e.
@@ -578,13 +566,13 @@ func removeTeamMember(e Engine, orgID, teamID, userID int64) error {
578566
}
579567

580568
// RemoveTeamMember removes member from given team of given organization.
581-
func RemoveTeamMember(orgID, teamID, userID int64) error {
569+
func RemoveTeamMember(team *Team, userID int64) error {
582570
sess := x.NewSession()
583571
defer sessionRelease(sess)
584572
if err := sess.Begin(); err != nil {
585573
return err
586574
}
587-
if err := removeTeamMember(sess, orgID, teamID, userID); err != nil {
575+
if err := removeTeamMember(sess, team, userID); err != nil {
588576
return err
589577
}
590578
return sess.Commit()

models/org_team_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ func TestAddTeamMember(t *testing.T) {
298298

299299
test := func(teamID, userID int64) {
300300
team := AssertExistsAndLoadBean(t, &Team{ID: teamID}).(*Team)
301-
assert.NoError(t, AddTeamMember(team.OrgID, team.ID, userID))
301+
assert.NoError(t, AddTeamMember(team, userID))
302302
AssertExistsAndLoadBean(t, &TeamUser{UID: userID, TeamID: teamID})
303303
CheckConsistencyFor(t, &Team{ID: teamID}, &User{ID: team.OrgID})
304304
}
@@ -312,7 +312,7 @@ func TestRemoveTeamMember(t *testing.T) {
312312

313313
testSuccess := func(teamID, userID int64) {
314314
team := AssertExistsAndLoadBean(t, &Team{ID: teamID}).(*Team)
315-
assert.NoError(t, RemoveTeamMember(team.OrgID, team.ID, userID))
315+
assert.NoError(t, RemoveTeamMember(team, userID))
316316
AssertNotExistsBean(t, &TeamUser{UID: userID, TeamID: teamID})
317317
CheckConsistencyFor(t, &Team{ID: teamID})
318318
}
@@ -322,7 +322,7 @@ func TestRemoveTeamMember(t *testing.T) {
322322
testSuccess(3, NonexistentID)
323323

324324
team := AssertExistsAndLoadBean(t, &Team{ID: 1}).(*Team)
325-
err := RemoveTeamMember(team.OrgID, team.ID, 2)
325+
err := RemoveTeamMember(team, 2)
326326
assert.True(t, IsErrLastOrgOwner(err))
327327
}
328328

0 commit comments

Comments
 (0)