Skip to content

Commit 44f8c81

Browse files
authored
Fix doctor --run check-db-consistency --fix with label fix (#16094)
* Add doctor for wrong label and issue_label data * Fix labels and issue labels check * Remove unnecessary functions
1 parent b9d611e commit 44f8c81

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

models/consistency.go

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -180,17 +180,21 @@ func CountOrphanedLabels() (int64, error) {
180180
}
181181

182182
norepo, err := x.Table("label").
183-
Join("LEFT", "repository", "label.repo_id=repository.id").
184-
Where(builder.IsNull{"repository.id"}).And(builder.Gt{"label.repo_id": 0}).
185-
Count("id")
183+
Where(builder.And(
184+
builder.Gt{"repo_id": 0},
185+
builder.NotIn("repo_id", builder.Select("id").From("repository")),
186+
)).
187+
Count()
186188
if err != nil {
187189
return 0, err
188190
}
189191

190192
noorg, err := x.Table("label").
191-
Join("LEFT", "`user`", "label.org_id=`user`.id").
192-
Where(builder.IsNull{"`user`.id"}).And(builder.Gt{"label.org_id": 0}).
193-
Count("id")
193+
Where(builder.And(
194+
builder.Gt{"org_id": 0},
195+
builder.NotIn("org_id", builder.Select("id").From("user")),
196+
)).
197+
Count()
194198
if err != nil {
195199
return 0, err
196200
}
@@ -206,17 +210,21 @@ func DeleteOrphanedLabels() error {
206210
}
207211

208212
// delete labels with none existing repos
209-
if _, err := x.In("id", builder.Select("label.id").From("label").
210-
Join("LEFT", "repository", "label.repo_id=repository.id").
211-
Where(builder.IsNull{"repository.id"}).And(builder.Gt{"label.repo_id": 0})).
213+
if _, err := x.
214+
Where(builder.And(
215+
builder.Gt{"repo_id": 0},
216+
builder.NotIn("repo_id", builder.Select("id").From("repository")),
217+
)).
212218
Delete(Label{}); err != nil {
213219
return err
214220
}
215221

216222
// delete labels with none existing orgs
217-
if _, err := x.In("id", builder.Select("label.id").From("label").
218-
Join("LEFT", "`user`", "label.org_id=`user`.id").
219-
Where(builder.IsNull{"`user`.id"}).And(builder.Gt{"label.org_id": 0})).
223+
if _, err := x.
224+
Where(builder.And(
225+
builder.Gt{"org_id": 0},
226+
builder.NotIn("org_id", builder.Select("id").From("user")),
227+
)).
220228
Delete(Label{}); err != nil {
221229
return err
222230
}
@@ -227,15 +235,14 @@ func DeleteOrphanedLabels() error {
227235
// CountOrphanedIssueLabels return count of IssueLabels witch have no label behind anymore
228236
func CountOrphanedIssueLabels() (int64, error) {
229237
return x.Table("issue_label").
230-
Join("LEFT", "label", "issue_label.label_id = label.id").
231-
Where(builder.IsNull{"label.id"}).Count()
238+
NotIn("label_id", builder.Select("id").From("label")).
239+
Count()
232240
}
233241

234242
// DeleteOrphanedIssueLabels delete IssueLabels witch have no label behind anymore
235243
func DeleteOrphanedIssueLabels() error {
236-
_, err := x.In("id", builder.Select("issue_label.id").From("issue_label").
237-
Join("LEFT", "label", "issue_label.label_id = label.id").
238-
Where(builder.IsNull{"label.id"})).
244+
_, err := x.
245+
NotIn("label_id", builder.Select("id").From("label")).
239246
Delete(IssueLabel{})
240247

241248
return err

0 commit comments

Comments
 (0)