Skip to content

Commit a7bb4ed

Browse files
committed
One Func to RecalculateIssueIndexForRepo
1 parent 32d5c7e commit a7bb4ed

File tree

3 files changed

+24
-22
lines changed

3 files changed

+24
-22
lines changed

models/index.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,3 @@ func getNextResourceIndex(tableName string, groupID int64) (int64, error) {
111111
}
112112
return curIdx, nil
113113
}
114-
115-
// UpdateResourceIndex is used to set max_index to a specific value.
116-
// !!! Only used to set max_index after repo migration !!!
117-
func UpdateResourceIndex(tableName string, groupID, max int64) error {
118-
_, err := x.Exec(fmt.Sprintf("UPDATE %s SET max_index=? WHERE group_id=?", tableName), max, groupID)
119-
return err
120-
}

models/issue.go

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -982,11 +982,29 @@ func newIssue(e *xorm.Session, doer *User, opts NewIssueOptions) (err error) {
982982
return opts.Issue.addCrossReferences(e, doer, false)
983983
}
984984

985-
// GetMaxIssueIndex return highest index of an issue based on repo id.
986-
// !!! Only used it to calculate entry for issue_index on repo migration !!!
987-
func GetMaxIssueIndex(repoID int64) (max int64, err error) {
988-
_, err = x.Select(" MAX(`index`)").Table("issue").Where("repo_id=?", repoID).Get(&max)
989-
return
985+
// RecalculateIssueIndexForRepo create issue_index for repo if not exist and
986+
// update it based on highest index of existing issues assigned to a repo
987+
func RecalculateIssueIndexForRepo(repoID int64) error {
988+
sess := x.NewSession()
989+
defer sess.Close()
990+
if err := sess.Begin(); err != nil {
991+
return err
992+
}
993+
994+
if err := upsertResourceIndex(sess, "issue_index", repoID); err != nil {
995+
return err
996+
}
997+
998+
var max int64
999+
if _, err := sess.Select(" MAX(`index`)").Table("issue").Where("repo_id=?", repoID).Get(&max); err != nil {
1000+
return err
1001+
}
1002+
1003+
if _, err := sess.Exec("UPDATE `issue_index` SET max_index=? WHERE group_id=?", max, repoID); err != nil {
1004+
return err
1005+
}
1006+
1007+
return sess.Commit()
9901008
}
9911009

9921010
// NewIssue creates new issue with labels for repository.

modules/migrations/gitea_uploader.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -872,16 +872,7 @@ func (g *GiteaLocalUploader) Finish() error {
872872
}
873873

874874
// update issue_index
875-
max, err := models.GetMaxIssueIndex(g.repo.ID)
876-
if err != nil {
877-
return err
878-
}
879-
880-
if _, err := models.GetNextResourceIndex("issue_index", g.repo.ID); err != nil {
881-
return err
882-
}
883-
884-
if err := models.UpdateResourceIndex("issue_index", g.repo.ID, max); err != nil {
875+
if err := models.RecalculateIssueIndexForRepo(g.repo.ID); err != nil {
885876
return err
886877
}
887878

0 commit comments

Comments
 (0)