From ce0413ff8894660f0a5f0a87cbadb6baacb80e4a Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 18 Feb 2020 08:42:13 +0800 Subject: [PATCH] Fix migration information update bug when linked github account (#10310) * Fix bug on upgrade migrated reactions * Fix migration information update bug when linked github account Co-authored-by: zeripath --- models/issue.go | 5 ++--- models/migrate.go | 24 ++++++++++++++---------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/models/issue.go b/models/issue.go index 4c33767d2a..afd110e06d 100644 --- a/models/issue.go +++ b/models/issue.go @@ -1873,9 +1873,8 @@ func UpdateIssuesMigrationsByType(gitServiceType structs.GitServiceType, origina // UpdateReactionsMigrationsByType updates all migrated repositories' reactions from gitServiceType to replace originalAuthorID to posterID func UpdateReactionsMigrationsByType(gitServiceType structs.GitServiceType, originalAuthorID string, userID int64) error { _, err := x.Table("reaction"). - Join("INNER", "issue", "issue.id = reaction.issue_id"). - Where("issue.repo_id IN (SELECT id FROM repository WHERE original_service_type = ?)", gitServiceType). - And("reaction.original_author_id = ?", originalAuthorID). + Where("original_author_id = ?", originalAuthorID). + And(migratedIssueCond(gitServiceType)). Update(map[string]interface{}{ "user_id": userID, "original_author": "", diff --git a/models/migrate.go b/models/migrate.go index 28661527a6..ea4a8c1768 100644 --- a/models/migrate.go +++ b/models/migrate.go @@ -208,20 +208,24 @@ func InsertReleases(rels ...*Release) error { return sess.Commit() } +func migratedIssueCond(tp structs.GitServiceType) builder.Cond { + return builder.In("issue_id", + builder.Select("issue.id"). + From("issue"). + InnerJoin("repository", "issue.repo_id = repository.id"). + Where(builder.Eq{ + "repository.original_service_type": tp, + }), + ) +} + // UpdateReviewsMigrationsByType updates reviews' migrations information via given git service type and original id and poster id func UpdateReviewsMigrationsByType(tp structs.GitServiceType, originalAuthorID string, posterID int64) error { _, err := x.Table("review"). - Where(builder.In("issue_id", - builder.Select("issue.id"). - From("issue"). - InnerJoin("repository", "issue.repo_id = repository.id"). - Where(builder.Eq{ - "repository.original_service_type": tp, - }), - )). - And("review.original_author_id = ?", originalAuthorID). + Where("original_author_id = ?", originalAuthorID). + And(migratedIssueCond(tp)). Update(map[string]interface{}{ - "poster_id": posterID, + "reviewer_id": posterID, "original_author": "", "original_author_id": 0, })