]> source.dussan.org Git - gitea.git/commitdiff
Fix milestone completness calculation when migrating (#7725)
authorLauris BH <lauris@nix.lv>
Sat, 3 Aug 2019 18:38:42 +0000 (21:38 +0300)
committerGitHub <noreply@github.com>
Sat, 3 Aug 2019 18:38:42 +0000 (21:38 +0300)
models/migrate.go

index b30e6a9d1c4fc95c836f061220ce91b0ab1d9811..85be3a312c1f8f29def6c360922a462cad87839f 100644 (file)
@@ -62,38 +62,50 @@ func insertIssue(sess *xorm.Session, issue *Issue) error {
        if _, err := sess.Insert(issueLabels); err != nil {
                return err
        }
+
+       cols := make([]string, 0)
        if !issue.IsPull {
                sess.ID(issue.RepoID).Incr("num_issues")
+               cols = append(cols, "num_issues")
                if issue.IsClosed {
                        sess.Incr("num_closed_issues")
+                       cols = append(cols, "num_closed_issues")
                }
        } else {
                sess.ID(issue.RepoID).Incr("num_pulls")
+               cols = append(cols, "num_pulls")
                if issue.IsClosed {
                        sess.Incr("num_closed_pulls")
+                       cols = append(cols, "num_closed_pulls")
                }
        }
-       if _, err := sess.NoAutoTime().Update(issue.Repo); err != nil {
+       if _, err := sess.NoAutoTime().Cols(cols...).Update(issue.Repo); err != nil {
                return err
        }
 
+       cols = []string{"num_issues"}
        sess.Incr("num_issues")
        if issue.IsClosed {
                sess.Incr("num_closed_issues")
+               cols = append(cols, "num_closed_issues")
        }
-       if _, err := sess.In("id", labelIDs).NoAutoTime().Update(new(Label)); err != nil {
+       if _, err := sess.In("id", labelIDs).NoAutoTime().Cols(cols...).Update(new(Label)); err != nil {
                return err
        }
 
        if issue.MilestoneID > 0 {
+               cols = []string{"num_issues"}
                sess.Incr("num_issues")
+               cl := "num_closed_issues"
                if issue.IsClosed {
                        sess.Incr("num_closed_issues")
+                       cols = append(cols, "num_closed_issues")
+                       cl = "(num_closed_issues + 1)"
                }
 
                if _, err := sess.ID(issue.MilestoneID).
-                       SetExpr("completeness", "num_closed_issues * 100 / num_issues").
-                       NoAutoTime().
+                       SetExpr("completeness", cl+" * 100 / (num_issues + 1)").
+                       NoAutoTime().Cols(cols...).
                        Update(new(Milestone)); err != nil {
                        return err
                }