summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeripath2020-06-11 22:08:13 +0100
committerGitHub2020-06-11 17:08:13 -0400
commitf2bde408049bed98ecedc4c1d73abf9639f34d76 (patch)
tree7d8bb4755b609bd06ec468793a03528d35499258
parent6b1e5f7f88d13bb651de715bc3f447df94b9d6a3 (diff)
Add doctor check to set IsArchived false if it is null (partial backport #11853) (#11859)
Partial backport of #11853 Add doctor check to set IsArchived false if it is null. (Migration change unfortunately not possible to be backported.) Fix #11824 Signed-off-by: Andrew Thornton <art27@cantab.net>
-rw-r--r--cmd/doctor.go16
-rw-r--r--models/consistency.go12
2 files changed, 28 insertions, 0 deletions
diff --git a/cmd/doctor.go b/cmd/doctor.go
index 3456f26f7..45a50c826 100644
--- a/cmd/doctor.go
+++ b/cmd/doctor.go
@@ -574,6 +574,22 @@ func runDoctorCheckDBConsistency(ctx *cli.Context) ([]string, error) {
}
}
+ count, err = models.CountNullArchivedRepository()
+ if err != nil {
+ return nil, err
+ }
+ if count > 0 {
+ if ctx.Bool("fix") {
+ updatedCount, err := models.FixNullArchivedRepository()
+ if err != nil {
+ return nil, err
+ }
+ results = append(results, fmt.Sprintf("%d repositories with null is_archived updated", updatedCount))
+ } else {
+ results = append(results, fmt.Sprintf("%d repositories with null is_archived", count))
+ }
+ }
+
//ToDo: function to recalc all counters
return results, nil
diff --git a/models/consistency.go b/models/consistency.go
index d6a158840..fbb99ca80 100644
--- a/models/consistency.go
+++ b/models/consistency.go
@@ -283,3 +283,15 @@ func DeleteOrphanedObjects(subject, refobject, joinCond string) error {
Delete("`" + subject + "`")
return err
}
+
+// CountNullArchivedRepository counts the number of repositories with is_archived is null
+func CountNullArchivedRepository() (int64, error) {
+ return x.Where(builder.IsNull{"is_archived"}).Count(new(Repository))
+}
+
+// FixNullArchivedRepository sets is_archived to false where it is null
+func FixNullArchivedRepository() (int64, error) {
+ return x.Where(builder.IsNull{"is_archived"}).Cols("is_archived").Update(&Repository{
+ IsArchived: false,
+ })
+}