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
This commit is contained in:
		
							parent
							
								
									b9d611e917
								
							
						
					
					
						commit
						44f8c812ec
					
				
					 1 changed files with 24 additions and 17 deletions
				
			
		|  | @ -180,17 +180,21 @@ func CountOrphanedLabels() (int64, error) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	norepo, err := x.Table("label"). | 	norepo, err := x.Table("label"). | ||||||
| 		Join("LEFT", "repository", "label.repo_id=repository.id"). | 		Where(builder.And( | ||||||
| 		Where(builder.IsNull{"repository.id"}).And(builder.Gt{"label.repo_id": 0}). | 			builder.Gt{"repo_id": 0}, | ||||||
| 		Count("id") | 			builder.NotIn("repo_id", builder.Select("id").From("repository")), | ||||||
|  | 		)). | ||||||
|  | 		Count() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return 0, err | 		return 0, err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	noorg, err := x.Table("label"). | 	noorg, err := x.Table("label"). | ||||||
| 		Join("LEFT", "`user`", "label.org_id=`user`.id"). | 		Where(builder.And( | ||||||
| 		Where(builder.IsNull{"`user`.id"}).And(builder.Gt{"label.org_id": 0}). | 			builder.Gt{"org_id": 0}, | ||||||
| 		Count("id") | 			builder.NotIn("org_id", builder.Select("id").From("user")), | ||||||
|  | 		)). | ||||||
|  | 		Count() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return 0, err | 		return 0, err | ||||||
| 	} | 	} | ||||||
|  | @ -206,17 +210,21 @@ func DeleteOrphanedLabels() error { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// delete labels with none existing repos
 | 	// delete labels with none existing repos
 | ||||||
| 	if _, err := x.In("id", builder.Select("label.id").From("label"). | 	if _, err := x. | ||||||
| 		Join("LEFT", "repository", "label.repo_id=repository.id"). | 		Where(builder.And( | ||||||
| 		Where(builder.IsNull{"repository.id"}).And(builder.Gt{"label.repo_id": 0})). | 			builder.Gt{"repo_id": 0}, | ||||||
|  | 			builder.NotIn("repo_id", builder.Select("id").From("repository")), | ||||||
|  | 		)). | ||||||
| 		Delete(Label{}); err != nil { | 		Delete(Label{}); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// delete labels with none existing orgs
 | 	// delete labels with none existing orgs
 | ||||||
| 	if _, err := x.In("id", builder.Select("label.id").From("label"). | 	if _, err := x. | ||||||
| 		Join("LEFT", "`user`", "label.org_id=`user`.id"). | 		Where(builder.And( | ||||||
| 		Where(builder.IsNull{"`user`.id"}).And(builder.Gt{"label.org_id": 0})). | 			builder.Gt{"org_id": 0}, | ||||||
|  | 			builder.NotIn("org_id", builder.Select("id").From("user")), | ||||||
|  | 		)). | ||||||
| 		Delete(Label{}); err != nil { | 		Delete(Label{}); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  | @ -227,15 +235,14 @@ func DeleteOrphanedLabels() error { | ||||||
| // CountOrphanedIssueLabels return count of IssueLabels witch have no label behind anymore
 | // CountOrphanedIssueLabels return count of IssueLabels witch have no label behind anymore
 | ||||||
| func CountOrphanedIssueLabels() (int64, error) { | func CountOrphanedIssueLabels() (int64, error) { | ||||||
| 	return x.Table("issue_label"). | 	return x.Table("issue_label"). | ||||||
| 		Join("LEFT", "label", "issue_label.label_id = label.id"). | 		NotIn("label_id", builder.Select("id").From("label")). | ||||||
| 		Where(builder.IsNull{"label.id"}).Count() | 		Count() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // DeleteOrphanedIssueLabels delete IssueLabels witch have no label behind anymore
 | // DeleteOrphanedIssueLabels delete IssueLabels witch have no label behind anymore
 | ||||||
| func DeleteOrphanedIssueLabels() error { | func DeleteOrphanedIssueLabels() error { | ||||||
| 	_, err := x.In("id", builder.Select("issue_label.id").From("issue_label"). | 	_, err := x. | ||||||
| 		Join("LEFT", "label", "issue_label.label_id = label.id"). | 		NotIn("label_id", builder.Select("id").From("label")). | ||||||
| 		Where(builder.IsNull{"label.id"})). |  | ||||||
| 		Delete(IssueLabel{}) | 		Delete(IssueLabel{}) | ||||||
| 
 | 
 | ||||||
| 	return err | 	return err | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue