From 06fa37e4e4cf06a27b8936c1c57c2efeb3c70b5e Mon Sep 17 00:00:00 2001 From: abeizn Date: Fri, 7 Jun 2024 16:49:37 +0800 Subject: [PATCH] fix: gitlab pr reviewers and assignees id (#7588) --- .../code/pull_request_assignees.go | 2 +- .../code/pull_request_reviewers.go | 2 +- ...07_modify_pr_assignees_and_reviewers_id.go | 48 +++++++++++++++++++ .../archived/pull_request_assignees.go | 2 +- .../archived/pull_request_reviewers.go | 2 +- .../core/models/migrationscripts/register.go | 1 + .../gitlab/tasks/mr_assignee_convertor.go | 3 +- .../gitlab/tasks/mr_reviewer_convertor.go | 3 +- 8 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 backend/core/models/migrationscripts/20240607_modify_pr_assignees_and_reviewers_id.go diff --git a/backend/core/models/domainlayer/code/pull_request_assignees.go b/backend/core/models/domainlayer/code/pull_request_assignees.go index 22a3ffd1d06..662ec9f84ee 100644 --- a/backend/core/models/domainlayer/code/pull_request_assignees.go +++ b/backend/core/models/domainlayer/code/pull_request_assignees.go @@ -23,7 +23,7 @@ import ( type PullRequestAssignee struct { PullRequestId string `json:"id" gorm:"primaryKey;type:varchar(255);comment:This key is generated based on details from the original plugin"` // format: ::: - AssigneeId int `gorm:"primaryKey"` + AssigneeId string `gorm:"primaryKey;type:varchar(255);"` Name string `gorm:"type:varchar(255)"` UserName string `gorm:"type:varchar(255)"` diff --git a/backend/core/models/domainlayer/code/pull_request_reviewers.go b/backend/core/models/domainlayer/code/pull_request_reviewers.go index 2fdc20d1e39..8d99664c6cf 100644 --- a/backend/core/models/domainlayer/code/pull_request_reviewers.go +++ b/backend/core/models/domainlayer/code/pull_request_reviewers.go @@ -23,7 +23,7 @@ import ( type PullRequestReviewer struct { PullRequestId string `json:"id" gorm:"primaryKey;type:varchar(255);comment:This key is generated based on details from the original plugin"` // format: ::: - ReviewerId int `gorm:"primaryKey"` + ReviewerId string `gorm:"primaryKey;type:varchar(255);"` Name string `gorm:"type:varchar(255)"` UserName string `gorm:"type:varchar(255)"` diff --git a/backend/core/models/migrationscripts/20240607_modify_pr_assignees_and_reviewers_id.go b/backend/core/models/migrationscripts/20240607_modify_pr_assignees_and_reviewers_id.go new file mode 100644 index 00000000000..adfe318ed91 --- /dev/null +++ b/backend/core/models/migrationscripts/20240607_modify_pr_assignees_and_reviewers_id.go @@ -0,0 +1,48 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package migrationscripts + +import ( + "github.com/apache/incubator-devlake/core/context" + "github.com/apache/incubator-devlake/core/errors" + "github.com/apache/incubator-devlake/core/models/migrationscripts/archived" + "github.com/apache/incubator-devlake/helpers/migrationhelper" +) + +type modifyPrAssigneeAndReviewerId struct{} + +func (u *modifyPrAssigneeAndReviewerId) Up(basicRes context.BasicRes) errors.Error { + db := basicRes.GetDal() + err := db.DropTables(&archived.PullRequestAssignee{}, &archived.PullRequestReviewer{}) + if err != nil { + return err + } + return migrationhelper.AutoMigrateTables( + basicRes, + &archived.PullRequestAssignee{}, + &archived.PullRequestReviewer{}, + ) +} + +func (*modifyPrAssigneeAndReviewerId) Version() uint64 { + return 20250607000041 +} + +func (*modifyPrAssigneeAndReviewerId) Name() string { + return "modify pull_request_reviewers and pull_request_assignees id columns" +} diff --git a/backend/core/models/migrationscripts/archived/pull_request_assignees.go b/backend/core/models/migrationscripts/archived/pull_request_assignees.go index d1881b97941..d3d578027ed 100644 --- a/backend/core/models/migrationscripts/archived/pull_request_assignees.go +++ b/backend/core/models/migrationscripts/archived/pull_request_assignees.go @@ -19,7 +19,7 @@ package archived type PullRequestAssignee struct { PullRequestId string `json:"id" gorm:"primaryKey;type:varchar(255);comment:This key is generated based on details from the original plugin"` // format: ::: - AssigneeId int `gorm:"primaryKey"` + AssigneeId string `gorm:"primaryKey;type:varchar(255);"` Name string `gorm:"type:varchar(255)"` UserName string `gorm:"type:varchar(255)"` diff --git a/backend/core/models/migrationscripts/archived/pull_request_reviewers.go b/backend/core/models/migrationscripts/archived/pull_request_reviewers.go index 8d47cf052d8..17d4d156f35 100644 --- a/backend/core/models/migrationscripts/archived/pull_request_reviewers.go +++ b/backend/core/models/migrationscripts/archived/pull_request_reviewers.go @@ -19,7 +19,7 @@ package archived type PullRequestReviewer struct { PullRequestId string `json:"id" gorm:"primaryKey;type:varchar(255);comment:This key is generated based on details from the original plugin"` // format: ::: - ReviewerId int `gorm:"primaryKey"` + ReviewerId string `gorm:"primaryKey;type:varchar(255);"` Name string `gorm:"type:varchar(255)"` UserName string `gorm:"type:varchar(255)"` diff --git a/backend/core/models/migrationscripts/register.go b/backend/core/models/migrationscripts/register.go index 638faf7398b..c2a7b805fe4 100644 --- a/backend/core/models/migrationscripts/register.go +++ b/backend/core/models/migrationscripts/register.go @@ -108,5 +108,6 @@ func All() []plugin.MigrationScript { new(addUrgencyToIssues), new(addSubtabknameToDeployment), new(addPrAssigneeAndReviewer), + new(modifyPrAssigneeAndReviewerId), } } diff --git a/backend/plugins/gitlab/tasks/mr_assignee_convertor.go b/backend/plugins/gitlab/tasks/mr_assignee_convertor.go index 3ae9523ee8a..d638d1dc0b3 100644 --- a/backend/plugins/gitlab/tasks/mr_assignee_convertor.go +++ b/backend/plugins/gitlab/tasks/mr_assignee_convertor.go @@ -64,6 +64,7 @@ func ConvertMrAssignees(taskCtx plugin.SubTaskContext) errors.Error { defer cursor.Close() mrIdGen := didgen.NewDomainIdGenerator(&models.GitlabMergeRequest{}) + accountIdGen := didgen.NewDomainIdGenerator(&models.GitlabAccount{}) converter, err := helper.NewDataConverter(helper.DataConverterArgs{ RawDataSubTaskArgs: *rawDataSubTaskArgs, @@ -73,7 +74,7 @@ func ConvertMrAssignees(taskCtx plugin.SubTaskContext) errors.Error { mrAssignee := inputRow.(*models.GitlabAssignee) domainPrAssigne := &code.PullRequestAssignee{ PullRequestId: mrIdGen.Generate(data.Options.ConnectionId, mrAssignee.MergeRequestId), - AssigneeId: mrAssignee.AssigneeId, + AssigneeId: accountIdGen.Generate(data.Options.ConnectionId, mrAssignee.AssigneeId), Name: mrAssignee.Name, UserName: mrAssignee.Username, } diff --git a/backend/plugins/gitlab/tasks/mr_reviewer_convertor.go b/backend/plugins/gitlab/tasks/mr_reviewer_convertor.go index dbbf10a14f3..b702de5733b 100644 --- a/backend/plugins/gitlab/tasks/mr_reviewer_convertor.go +++ b/backend/plugins/gitlab/tasks/mr_reviewer_convertor.go @@ -64,6 +64,7 @@ func ConvertMrReviewers(taskCtx plugin.SubTaskContext) errors.Error { defer cursor.Close() mrIdGen := didgen.NewDomainIdGenerator(&models.GitlabMergeRequest{}) + accountIdGen := didgen.NewDomainIdGenerator(&models.GitlabAccount{}) converter, err := helper.NewDataConverter(helper.DataConverterArgs{ RawDataSubTaskArgs: *rawDataSubTaskArgs, @@ -73,7 +74,7 @@ func ConvertMrReviewers(taskCtx plugin.SubTaskContext) errors.Error { mrReviewer := inputRow.(*models.GitlabReviewer) domainPrReviewer := &code.PullRequestReviewer{ PullRequestId: mrIdGen.Generate(data.Options.ConnectionId, mrReviewer.MergeRequestId), - ReviewerId: mrReviewer.ReviewerId, + ReviewerId: accountIdGen.Generate(data.Options.ConnectionId, mrReviewer.ReviewerId), Name: mrReviewer.Name, UserName: mrReviewer.Username, }