This is an automated email from the ASF dual-hosted git repository.

warren pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new bd76b6cc4 fix: bitbucket pr_commits/pr_commits have the incorrect FK 
to pr (#4939)
bd76b6cc4 is described below

commit bd76b6cc4aa8a705f19fb87d8fadd1a6e1e1a77b
Author: Klesh Wong <[email protected]>
AuthorDate: Mon Apr 17 18:44:25 2023 +0800

    fix: bitbucket pr_commits/pr_commits have the incorrect FK to pr (#4939)
    
    * refactor: simplify renameCicdPipelineRepoToRepoUrl
    
    * fix: bitbucket pr_commits/pr_commits have the incorrect FK to pr
---
 ...230406_rename_cicd_pipeline_commits_repo_url.go |   7 +-
 backend/plugins/bitbucket/e2e/comment_test.go      |   4 +-
 .../_tool_bitbucket_pull_request_comments.csv      |  38 +++----
 .../migrationscripts/20230417_add_repo_id_to_pr.go | 114 +++++++++++++++++++++
 .../bitbucket/models/migrationscripts/register.go  |   1 +
 backend/plugins/bitbucket/models/pr_comment.go     |   6 +-
 backend/plugins/bitbucket/models/pr_commit.go      |   3 +-
 .../bitbucket/tasks/pr_comment_convertor.go        |  22 ++--
 .../bitbucket/tasks/pr_comment_extractor.go        |   1 +
 .../plugins/bitbucket/tasks/pr_commit_convertor.go |  14 ++-
 .../plugins/bitbucket/tasks/pr_commit_extractor.go |   8 +-
 11 files changed, 166 insertions(+), 52 deletions(-)

diff --git 
a/backend/core/models/migrationscripts/20230406_rename_cicd_pipeline_commits_repo_url.go
 
b/backend/core/models/migrationscripts/20230406_rename_cicd_pipeline_commits_repo_url.go
index 4cb45b7f8..83b8ca732 100644
--- 
a/backend/core/models/migrationscripts/20230406_rename_cicd_pipeline_commits_repo_url.go
+++ 
b/backend/core/models/migrationscripts/20230406_rename_cicd_pipeline_commits_repo_url.go
@@ -28,12 +28,7 @@ var _ plugin.MigrationScript = 
(*renameCicdPipelineRepoToRepoUrl)(nil)
 type renameCicdPipelineRepoToRepoUrl struct{}
 
 func (*renameCicdPipelineRepoToRepoUrl) Up(basicRes context.BasicRes) 
errors.Error {
-       db := basicRes.GetDal()
-       err := db.RenameColumn("cicd_pipeline_commits", "repo", "repo_url")
-       if err != nil {
-               return err
-       }
-       return nil
+       return basicRes.GetDal().RenameColumn("cicd_pipeline_commits", "repo", 
"repo_url")
 }
 
 func (*renameCicdPipelineRepoToRepoUrl) Version() uint64 {
diff --git a/backend/plugins/bitbucket/e2e/comment_test.go 
b/backend/plugins/bitbucket/e2e/comment_test.go
index 526c7360f..83fbe2a35 100644
--- a/backend/plugins/bitbucket/e2e/comment_test.go
+++ b/backend/plugins/bitbucket/e2e/comment_test.go
@@ -18,13 +18,14 @@ limitations under the License.
 package e2e
 
 import (
+       "testing"
+
        "github.com/apache/incubator-devlake/core/models/domainlayer/code"
        "github.com/apache/incubator-devlake/core/models/domainlayer/ticket"
        "github.com/apache/incubator-devlake/helpers/e2ehelper"
        "github.com/apache/incubator-devlake/plugins/bitbucket/impl"
        "github.com/apache/incubator-devlake/plugins/bitbucket/models"
        "github.com/apache/incubator-devlake/plugins/bitbucket/tasks"
-       "testing"
 )
 
 func TestCommentDataFlow(t *testing.T) {
@@ -71,6 +72,7 @@ func TestCommentDataFlow(t *testing.T) {
                e2ehelper.ColumnWithRawData(
                        "connection_id",
                        "bitbucket_id",
+                       "repo_id",
                        "pull_request_id",
                        "author_name",
                        "author_id",
diff --git 
a/backend/plugins/bitbucket/e2e/snapshot_tables/_tool_bitbucket_pull_request_comments.csv
 
b/backend/plugins/bitbucket/e2e/snapshot_tables/_tool_bitbucket_pull_request_comments.csv
index 1cc00f41b..aaf3268d9 100644
--- 
a/backend/plugins/bitbucket/e2e/snapshot_tables/_tool_bitbucket_pull_request_comments.csv
+++ 
b/backend/plugins/bitbucket/e2e/snapshot_tables/_tool_bitbucket_pull_request_comments.csv
@@ -1,19 +1,19 @@
-connection_id,bitbucket_id,pull_request_id,author_name,author_id,type,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-1,323119643,54,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,14,
-1,323119662,54,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,15,
-1,323119730,57,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,17,
-1,323119743,57,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,18,
-1,323119784,51,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,12,
-1,323119790,51,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,13,
-1,323119842,42,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,8,
-1,323119856,42,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,9,
-1,323119897,54,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,16,
-1,323119960,38,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,4,
-1,323119980,38,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,5,
-1,323120091,44,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,10,
-1,323120101,44,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,11,
-1,323120140,40,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,6,
-1,323120196,41,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,7,
-1,323120278,31,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,1,
-1,323120296,31,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,2,
-1,323120311,31,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,3,
+connection_id,bitbucket_id,repo_id,pull_request_id,author_name,author_id,type,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,323119643,likyh/likyhphp,54,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,14,
+1,323119662,likyh/likyhphp,54,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,15,
+1,323119730,likyh/likyhphp,57,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,17,
+1,323119743,likyh/likyhphp,57,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,18,
+1,323119784,likyh/likyhphp,51,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,12,
+1,323119790,likyh/likyhphp,51,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,13,
+1,323119842,likyh/likyhphp,42,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,8,
+1,323119856,likyh/likyhphp,42,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,9,
+1,323119897,likyh/likyhphp,54,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,16,
+1,323119960,likyh/likyhphp,38,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,4,
+1,323119980,likyh/likyhphp,38,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,5,
+1,323120091,likyh/likyhphp,44,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,10,
+1,323120101,likyh/likyhphp,44,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,11,
+1,323120140,likyh/likyhphp,40,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,6,
+1,323120196,likyh/likyhphp,41,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,7,
+1,323120278,likyh/likyhphp,31,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,1,
+1,323120296,likyh/likyhphp,31,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,2,
+1,323120311,likyh/likyhphp,31,teoiaoe,62abf394192edb006fa0e8cf,pullrequest_comment,"{""ConnectionId"":1,""FullName"":""likyh/likyhphp""}",_raw_bitbucket_api_pull_request_comments,3,
\ No newline at end of file
diff --git 
a/backend/plugins/bitbucket/models/migrationscripts/20230417_add_repo_id_to_pr.go
 
b/backend/plugins/bitbucket/models/migrationscripts/20230417_add_repo_id_to_pr.go
new file mode 100644
index 000000000..0bf034a4c
--- /dev/null
+++ 
b/backend/plugins/bitbucket/models/migrationscripts/20230417_add_repo_id_to_pr.go
@@ -0,0 +1,114 @@
+/*
+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 (
+       "time"
+
+       "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 addRepoIdToPr struct{}
+
+type pr20230417 struct {
+       ConnectionId       uint64 `gorm:"primaryKey"`
+       RepoId             string `gorm:"primaryKey;type:varchar(255)"` // 
repo_id should be a part of the primary key
+       BitbucketId        int    `gorm:"primaryKey"`
+       Number             int    `gorm:"index"`
+       BaseRepoId         string
+       HeadRepoId         string
+       State              string `gorm:"type:varchar(255)"`
+       Title              string
+       Description        string
+       BitbucketCreatedAt time.Time
+       BitbucketUpdatedAt time.Time `gorm:"index"`
+       ClosedAt           *time.Time
+       CommentCount       int
+       Commits            int
+       MergedAt           *time.Time
+       Body               string
+       Type               string `gorm:"type:varchar(255)"`
+       Component          string `gorm:"type:varchar(255)"`
+       MergeCommitSha     string `gorm:"type:varchar(40)"`
+       HeadRef            string `gorm:"type:varchar(255)"`
+       BaseRef            string `gorm:"type:varchar(255)"`
+       BaseCommitSha      string `gorm:"type:varchar(255)"`
+       HeadCommitSha      string `gorm:"type:varchar(255)"`
+       Url                string `gorm:"type:varchar(255)"`
+       AuthorName         string `gorm:"type:varchar(255)"`
+       AuthorId           string `gorm:"type:varchar(255)"`
+       archived.NoPKModel
+}
+
+func (pr20230417) TableName() string {
+       return "_tool_bitbucket_pull_requests"
+}
+
+type prComment20230417 struct {
+       ConnectionId       uint64 `gorm:"primaryKey"`
+       BitbucketId        int    `gorm:"primaryKey"`
+       RepoId             string `gorm:"index:pr"` // PullRequestId is not 
unique across multiple repos of a connection
+       PullRequestId      int    `gorm:"index:pr"`
+       AuthorId           string `gorm:"type:varchar(255)"`
+       AuthorName         string `gorm:"type:varchar(255)"`
+       BitbucketCreatedAt time.Time
+       BitbucketUpdatedAt *time.Time
+       Type               string `gorm:"comment:if type=null, it is normal 
comment,if type=diffNote,it is diff comment"`
+       Body               string
+       archived.NoPKModel
+}
+
+func (prComment20230417) TableName() string {
+       return "_tool_bitbucket_pull_request_comments"
+}
+
+type prCommit20230417 struct {
+       ConnectionId  uint64 `gorm:"primaryKey"`
+       RepoId        string `gorm:"primaryKey"` // PullRequestId is not unique 
across multiple repos of a connection
+       PullRequestId int    `gorm:"primaryKey;autoIncrement:false"`
+       CommitSha     string `gorm:"primaryKey;type:varchar(40)"`
+       archived.NoPKModel
+}
+
+func (prCommit20230417) TableName() string {
+       return "_tool_bitbucket_pull_request_commits"
+}
+
+func (u *addRepoIdToPr) Up(basicRes context.BasicRes) errors.Error {
+       tables := []interface{}{
+               &pr20230417{},
+               &prComment20230417{},
+               &prCommit20230417{},
+       }
+       err := basicRes.GetDal().DropTables(tables...)
+       if err != nil {
+               return err
+       }
+       return migrationhelper.AutoMigrateTables(basicRes, tables...)
+}
+
+func (*addRepoIdToPr) Version() uint64 {
+       return 20230417150357
+}
+
+func (*addRepoIdToPr) Name() string {
+       return "add repo_id to pr as part of the primary key"
+}
diff --git a/backend/plugins/bitbucket/models/migrationscripts/register.go 
b/backend/plugins/bitbucket/models/migrationscripts/register.go
index 3618ed65a..854e23f79 100644
--- a/backend/plugins/bitbucket/models/migrationscripts/register.go
+++ b/backend/plugins/bitbucket/models/migrationscripts/register.go
@@ -34,5 +34,6 @@ func All() []plugin.MigrationScript {
                new(addConnectionIdToTransformationRule),
                new(addTypeEnvToPipelineAndStep),
                new(addRepoIdField20230411),
+               new(addRepoIdToPr),
        }
 }
diff --git a/backend/plugins/bitbucket/models/pr_comment.go 
b/backend/plugins/bitbucket/models/pr_comment.go
index cea6acd5f..ce2b8372b 100644
--- a/backend/plugins/bitbucket/models/pr_comment.go
+++ b/backend/plugins/bitbucket/models/pr_comment.go
@@ -18,14 +18,16 @@ limitations under the License.
 package models
 
 import (
-       "github.com/apache/incubator-devlake/core/models/common"
        "time"
+
+       "github.com/apache/incubator-devlake/core/models/common"
 )
 
 type BitbucketPrComment struct {
        ConnectionId       uint64 `gorm:"primaryKey"`
        BitbucketId        int    `gorm:"primaryKey"`
-       PullRequestId      int    `gorm:"index"`
+       RepoId             string `gorm:"index:pr"` // PullRequestId is not 
unique across multiple repos of a connection
+       PullRequestId      int    `gorm:"index:pr"`
        AuthorId           string `gorm:"type:varchar(255)"`
        AuthorName         string `gorm:"type:varchar(255)"`
        BitbucketCreatedAt time.Time
diff --git a/backend/plugins/bitbucket/models/pr_commit.go 
b/backend/plugins/bitbucket/models/pr_commit.go
index 4da235beb..74327a32f 100644
--- a/backend/plugins/bitbucket/models/pr_commit.go
+++ b/backend/plugins/bitbucket/models/pr_commit.go
@@ -23,8 +23,9 @@ import (
 
 type BitbucketPrCommit struct {
        ConnectionId  uint64 `gorm:"primaryKey"`
-       CommitSha     string `gorm:"primaryKey;type:varchar(40)"`
+       RepoId        string `gorm:"primaryKey"` // PullRequestId is not unique 
across multiple repos of a connection
        PullRequestId int    `gorm:"primaryKey;autoIncrement:false"`
+       CommitSha     string `gorm:"primaryKey;type:varchar(40)"`
        common.NoPKModel
 }
 
diff --git a/backend/plugins/bitbucket/tasks/pr_comment_convertor.go 
b/backend/plugins/bitbucket/tasks/pr_comment_convertor.go
index 66cf0a785..c42c7d6ed 100644
--- a/backend/plugins/bitbucket/tasks/pr_comment_convertor.go
+++ b/backend/plugins/bitbucket/tasks/pr_comment_convertor.go
@@ -18,6 +18,8 @@ limitations under the License.
 package tasks
 
 import (
+       "reflect"
+
        "github.com/apache/incubator-devlake/core/dal"
        "github.com/apache/incubator-devlake/core/errors"
        "github.com/apache/incubator-devlake/core/models/domainlayer"
@@ -26,7 +28,6 @@ import (
        plugin "github.com/apache/incubator-devlake/core/plugin"
        "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
        "github.com/apache/incubator-devlake/plugins/bitbucket/models"
-       "reflect"
 )
 
 var ConvertPrCommentsMeta = plugin.SubTaskMeta{
@@ -40,13 +41,10 @@ var ConvertPrCommentsMeta = plugin.SubTaskMeta{
 func ConvertPullRequestComments(taskCtx plugin.SubTaskContext) errors.Error {
        rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, 
RAW_PULL_REQUEST_COMMENTS_TABLE)
        db := taskCtx.GetDal()
-       repoId := data.Options.FullName
 
        cursor, err := db.Cursor(
                dal.From(&models.BitbucketPrComment{}),
-               dal.Join("left join _tool_bitbucket_pull_requests "+
-                       "on _tool_bitbucket_pull_requests.bitbucket_id = 
_tool_bitbucket_pull_request_comments.pull_request_id"),
-               dal.Where("repo_id = ? and 
_tool_bitbucket_pull_requests.connection_id = ?", repoId, 
data.Options.ConnectionId),
+               dal.Where("connection_id = ? AND repo_id = ?", 
data.Options.ConnectionId, data.Options.FullName),
        )
        if err != nil {
                return err
@@ -62,16 +60,16 @@ func ConvertPullRequestComments(taskCtx 
plugin.SubTaskContext) errors.Error {
                Input:              cursor,
                RawDataSubTaskArgs: *rawDataSubTaskArgs,
                Convert: func(inputRow interface{}) ([]interface{}, 
errors.Error) {
-                       bitbucketPullRequestComment := 
inputRow.(*models.BitbucketPrComment)
+                       prComment := inputRow.(*models.BitbucketPrComment)
                        domainPrComment := &code.PullRequestComment{
                                DomainEntity: domainlayer.DomainEntity{
-                                       Id: 
domainIdGeneratorComment.Generate(data.Options.ConnectionId, 
bitbucketPullRequestComment.BitbucketId),
+                                       Id: 
domainIdGeneratorComment.Generate(prComment.ConnectionId, 
prComment.BitbucketId),
                                },
-                               PullRequestId: 
prIdGen.Generate(data.Options.ConnectionId, data.Options.FullName, 
bitbucketPullRequestComment.PullRequestId),
-                               AccountId:     
accountIdGen.Generate(data.Options.ConnectionId, 
bitbucketPullRequestComment.AuthorId),
-                               CreatedDate:   
bitbucketPullRequestComment.CreatedAt,
-                               Body:          bitbucketPullRequestComment.Body,
-                               Type:          bitbucketPullRequestComment.Type,
+                               PullRequestId: 
prIdGen.Generate(prComment.ConnectionId, prComment.RepoId, 
prComment.PullRequestId),
+                               AccountId:     
accountIdGen.Generate(prComment.ConnectionId, prComment.AuthorId),
+                               CreatedDate:   prComment.CreatedAt,
+                               Body:          prComment.Body,
+                               Type:          prComment.Type,
                                CommitSha:     "",
                                Position:      0,
                        }
diff --git a/backend/plugins/bitbucket/tasks/pr_comment_extractor.go 
b/backend/plugins/bitbucket/tasks/pr_comment_extractor.go
index 8042191d7..9b1784c72 100644
--- a/backend/plugins/bitbucket/tasks/pr_comment_extractor.go
+++ b/backend/plugins/bitbucket/tasks/pr_comment_extractor.go
@@ -64,6 +64,7 @@ func ExtractApiPullRequestsComments(taskCtx 
plugin.SubTaskContext) errors.Error
 
                        toolprComment, err := 
convertPullRequestComment(prComment)
                        toolprComment.ConnectionId = data.Options.ConnectionId
+                       toolprComment.RepoId = data.Options.FullName
                        if err != nil {
                                return nil, err
                        }
diff --git a/backend/plugins/bitbucket/tasks/pr_commit_convertor.go 
b/backend/plugins/bitbucket/tasks/pr_commit_convertor.go
index cdf6d72c7..dfde587ff 100644
--- a/backend/plugins/bitbucket/tasks/pr_commit_convertor.go
+++ b/backend/plugins/bitbucket/tasks/pr_commit_convertor.go
@@ -18,13 +18,14 @@ limitations under the License.
 package tasks
 
 import (
+       "reflect"
+
        "github.com/apache/incubator-devlake/core/dal"
        "github.com/apache/incubator-devlake/core/errors"
        "github.com/apache/incubator-devlake/core/models/domainlayer/code"
        "github.com/apache/incubator-devlake/core/models/domainlayer/didgen"
        "github.com/apache/incubator-devlake/core/plugin"
        helper "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
-       "reflect"
 
        bitbucketModels 
"github.com/apache/incubator-devlake/plugins/bitbucket/models"
 )
@@ -40,15 +41,12 @@ var ConvertPrCommitsMeta = plugin.SubTaskMeta{
 func ConvertPullRequestCommits(taskCtx plugin.SubTaskContext) (err 
errors.Error) {
        rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, 
RAW_PULL_REQUEST_COMMITS_TABLE)
        db := taskCtx.GetDal()
-       repoId := data.Options.FullName
 
        pullIdGen := 
didgen.NewDomainIdGenerator(&bitbucketModels.BitbucketPullRequest{})
 
        cursor, err := db.Cursor(
                dal.From(&bitbucketModels.BitbucketPrCommit{}),
-               dal.Join(`left join _tool_bitbucket_pull_requests on 
_tool_bitbucket_pull_requests.bitbucket_id = 
_tool_bitbucket_pull_request_commits.pull_request_id`),
-               dal.Where("_tool_bitbucket_pull_requests.repo_id = ? and 
_tool_bitbucket_pull_requests.connection_id = ?", repoId, 
data.Options.ConnectionId),
-               dal.Orderby("pull_request_id ASC"),
+               dal.Where("connection_id = ? AND repo_id = ?", 
data.Options.ConnectionId, data.Options.FullName),
        )
        if err != nil {
                return err
@@ -60,10 +58,10 @@ func ConvertPullRequestCommits(taskCtx 
plugin.SubTaskContext) (err errors.Error)
                Input:              cursor,
                RawDataSubTaskArgs: *rawDataSubTaskArgs,
                Convert: func(inputRow interface{}) ([]interface{}, 
errors.Error) {
-                       bitbucketPullRequestCommit := 
inputRow.(*bitbucketModels.BitbucketPrCommit)
+                       prCommit := 
inputRow.(*bitbucketModels.BitbucketPrCommit)
                        domainPrCommit := &code.PullRequestCommit{
-                               CommitSha:     
bitbucketPullRequestCommit.CommitSha,
-                               PullRequestId: 
pullIdGen.Generate(data.Options.ConnectionId, data.Options.FullName, 
bitbucketPullRequestCommit.PullRequestId),
+                               CommitSha:     prCommit.CommitSha,
+                               PullRequestId: 
pullIdGen.Generate(prCommit.ConnectionId, prCommit.RepoId, 
prCommit.PullRequestId),
                        }
                        return []interface{}{
                                domainPrCommit,
diff --git a/backend/plugins/bitbucket/tasks/pr_commit_extractor.go 
b/backend/plugins/bitbucket/tasks/pr_commit_extractor.go
index 4abd76966..7c6f6de7d 100644
--- a/backend/plugins/bitbucket/tasks/pr_commit_extractor.go
+++ b/backend/plugins/bitbucket/tasks/pr_commit_extractor.go
@@ -19,11 +19,12 @@ package tasks
 
 import (
        "encoding/json"
+       "strings"
+       "time"
+
        "github.com/apache/incubator-devlake/core/errors"
        "github.com/apache/incubator-devlake/core/plugin"
        helper "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
-       "strings"
-       "time"
 
        "github.com/apache/incubator-devlake/plugins/bitbucket/models"
 )
@@ -89,8 +90,9 @@ func ExtractApiPullRequestCommits(taskCtx 
plugin.SubTaskContext) errors.Error {
 
                        bitbucketPullRequestCommit := &models.BitbucketPrCommit{
                                ConnectionId:  data.Options.ConnectionId,
-                               CommitSha:     apiPullRequestCommit.Hash,
+                               RepoId:        repoId,
                                PullRequestId: pull.BitbucketId,
+                               CommitSha:     apiPullRequestCommit.Hash,
                        }
                        if err != nil {
                                return nil, err

Reply via email to