Skip to content

Commit dd55534

Browse files
authored
Reduce usage of allcols on update (#2596)
* reduce usage of allcols on update * fix bug and tests
1 parent 6b6f16c commit dd55534

File tree

10 files changed

+21
-25
lines changed

10 files changed

+21
-25
lines changed

models/issue_milestone.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ func ChangeMilestoneStatus(m *Milestone, isClosed bool) (err error) {
227227

228228
repo.NumMilestones = int(countRepoMilestones(sess, repo.ID))
229229
repo.NumClosedMilestones = int(countRepoClosedMilestones(sess, repo.ID))
230-
if _, err = sess.Id(repo.ID).AllCols().Update(repo); err != nil {
230+
if _, err = sess.Id(repo.ID).Cols("num_milestones, num_closed_milestones").Update(repo); err != nil {
231231
return err
232232
}
233233
return sess.Commit()
@@ -341,7 +341,7 @@ func DeleteMilestoneByRepoID(repoID, id int64) error {
341341

342342
repo.NumMilestones = int(countRepoMilestones(sess, repo.ID))
343343
repo.NumClosedMilestones = int(countRepoClosedMilestones(sess, repo.ID))
344-
if _, err = sess.Id(repo.ID).AllCols().Update(repo); err != nil {
344+
if _, err = sess.Id(repo.ID).Cols("num_milestones, num_closed_milestones").Update(repo); err != nil {
345345
return err
346346
}
347347

models/issue_user.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ func UpdateIssueUsersByMentions(e Engine, issueID int64, uids []int64) error {
101101

102102
iu.IsMentioned = true
103103
if has {
104-
_, err = e.Id(iu.ID).AllCols().Update(iu)
104+
_, err = e.Id(iu.ID).Cols("is_mentioned").Update(iu)
105105
} else {
106106
_, err = e.Insert(iu)
107107
}

models/org.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ func ChangeOrgUserStatus(orgID, uid int64, public bool) error {
412412
}
413413

414414
ou.IsPublic = public
415-
_, err = x.Id(ou.ID).AllCols().Update(ou)
415+
_, err = x.Id(ou.ID).Cols("is_public").Update(ou)
416416
return err
417417
}
418418

models/org_team.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func (t *Team) addRepository(e Engine, repo *Repository) (err error) {
9696
}
9797

9898
t.NumRepos++
99-
if _, err = e.Id(t.ID).AllCols().Update(t); err != nil {
99+
if _, err = e.Id(t.ID).Cols("num_repos").Update(t); err != nil {
100100
return fmt.Errorf("update team: %v", err)
101101
}
102102

@@ -142,7 +142,7 @@ func (t *Team) removeRepository(e Engine, repo *Repository, recalculate bool) (e
142142
}
143143

144144
t.NumRepos--
145-
if _, err = e.Id(t.ID).AllCols().Update(t); err != nil {
145+
if _, err = e.Id(t.ID).Cols("num_repos").Update(t); err != nil {
146146
return err
147147
}
148148

@@ -521,7 +521,7 @@ func AddTeamMember(team *Team, userID int64) error {
521521
if team.IsOwnerTeam() {
522522
ou.IsOwner = true
523523
}
524-
if _, err := sess.Id(ou.ID).AllCols().Update(ou); err != nil {
524+
if _, err := sess.Id(ou.ID).Cols("num_teams, is_owner").Update(ou); err != nil {
525525
return err
526526
}
527527

@@ -552,7 +552,7 @@ func removeTeamMember(e Engine, team *Team, userID int64) error {
552552
return err
553553
} else if _, err = e.
554554
Id(team.ID).
555-
AllCols().
555+
Cols("num_members").
556556
Update(team); err != nil {
557557
return err
558558
}
@@ -579,7 +579,7 @@ func removeTeamMember(e Engine, team *Team, userID int64) error {
579579
}
580580
if _, err = e.
581581
Id(ou.ID).
582-
AllCols().
582+
Cols("num_teams").
583583
Update(ou); err != nil {
584584
return err
585585
}

models/pull.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ func (pr *PullRequest) setMerged() (err error) {
425425
if err = pr.Issue.changeStatus(sess, pr.Merger, pr.Issue.Repo, true); err != nil {
426426
return fmt.Errorf("Issue.changeStatus: %v", err)
427427
}
428-
if _, err = sess.Id(pr.ID).AllCols().Update(pr); err != nil {
428+
if _, err = sess.Id(pr.ID).Cols("has_merged").Update(pr); err != nil {
429429
return fmt.Errorf("update pull request: %v", err)
430430
}
431431

models/repo.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1458,7 +1458,7 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) error
14581458
}
14591459

14601460
t.NumRepos--
1461-
if _, err := sess.Id(t.ID).AllCols().Update(t); err != nil {
1461+
if _, err := sess.Id(t.ID).Cols("num_repos").Update(t); err != nil {
14621462
return fmt.Errorf("decrease team repository count '%d': %v", t.ID, err)
14631463
}
14641464
}

models/repo_collaboration.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ func (repo *Repository) ChangeCollaborationAccessMode(uid int64, mode AccessMode
143143

144144
if _, err = sess.
145145
Id(collaboration.ID).
146-
AllCols().
146+
Cols("mode").
147147
Update(collaboration); err != nil {
148148
return fmt.Errorf("update collaboration: %v", err)
149149
} else if _, err = sess.Exec("UPDATE access SET mode = ? WHERE user_id = ? AND repo_id = ?", mode, uid, repo.ID); err != nil {

models/ssh_key.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -477,15 +477,8 @@ func ListPublicKeys(uid int64) ([]*PublicKey, error) {
477477
Find(&keys)
478478
}
479479

480-
// UpdatePublicKey updates given public key.
481-
func UpdatePublicKey(key *PublicKey) error {
482-
_, err := x.Id(key.ID).AllCols().Update(key)
483-
return err
484-
}
485-
486480
// UpdatePublicKeyUpdated updates public key use time.
487481
func UpdatePublicKeyUpdated(id int64) error {
488-
now := time.Now()
489482
// Check if key exists before update as affected rows count is unreliable
490483
// and will return 0 affected rows if two updates are made at the same time
491484
if cnt, err := x.ID(id).Count(&PublicKey{}); err != nil {
@@ -495,8 +488,7 @@ func UpdatePublicKeyUpdated(id int64) error {
495488
}
496489

497490
_, err := x.ID(id).Cols("updated_unix").Update(&PublicKey{
498-
Updated: now,
499-
UpdatedUnix: now.Unix(),
491+
UpdatedUnix: time.Now().Unix(),
500492
})
501493
if err != nil {
502494
return err

models/user.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -874,6 +874,10 @@ func UpdateUser(u *User) error {
874874

875875
// UpdateUserCols update user according special columns
876876
func UpdateUserCols(u *User, cols ...string) error {
877+
return updateUserCols(x, u, cols...)
878+
}
879+
880+
func updateUserCols(e Engine, u *User, cols ...string) error {
877881
// Organization does not need email
878882
u.Email = strings.ToLower(u.Email)
879883
if !u.IsOrganization() {
@@ -890,7 +894,7 @@ func UpdateUserCols(u *User, cols ...string) error {
890894
u.Website = base.TruncateString(u.Website, 255)
891895
u.Description = base.TruncateString(u.Description, 255)
892896

893-
_, err := x.Id(u.ID).Cols(cols...).Update(u)
897+
_, err := e.Id(u.ID).Cols(cols...).Update(u)
894898
return err
895899
}
896900

models/user_mail.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,10 @@ func (email *EmailAddress) Activate() error {
135135
email.IsActivated = true
136136
if _, err := sess.
137137
Id(email.ID).
138-
AllCols().
138+
Cols("is_activated").
139139
Update(email); err != nil {
140140
return err
141-
} else if err = updateUser(sess, user); err != nil {
141+
} else if err = updateUserCols(sess, user, "rands"); err != nil {
142142
return err
143143
}
144144

@@ -222,7 +222,7 @@ func MakeEmailPrimary(email *EmailAddress) error {
222222
}
223223

224224
user.Email = email.Email
225-
if _, err = sess.Id(user.ID).AllCols().Update(user); err != nil {
225+
if _, err = sess.Id(user.ID).Cols("email").Update(user); err != nil {
226226
return err
227227
}
228228

0 commit comments

Comments
 (0)