You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by wa...@apache.org on 2022/12/01 07:34:24 UTC

[incubator-devlake] branch main updated: refactor(domain): rename fields in project pr metrics (#3829)

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 f22e10a77 refactor(domain): rename fields in project pr metrics (#3829)
f22e10a77 is described below

commit f22e10a770aa2a1c1f8698aefb2e3aa7b6c92249
Author: Warren Chen <yi...@merico.dev>
AuthorDate: Thu Dec 1 15:34:19 2022 +0800

    refactor(domain): rename fields in project pr metrics (#3829)
---
 .../domainlayer/crossdomain/project_pr_metric.go   | 10 +++----
 .../20221201_add_project_pr_metric.go}             | 33 ++++++++++++----------
 ...{project_pr_metrics.go => project_pr_metric.go} | 12 ++++----
 models/migrationscripts/register.go                |  1 +
 .../e2e/snapshot_tables/project_pr_metrics.csv     |  2 +-
 plugins/dora/tasks/change_lead_time_calculator.go  | 28 +++++++++---------
 6 files changed, 45 insertions(+), 41 deletions(-)

diff --git a/models/domainlayer/crossdomain/project_pr_metric.go b/models/domainlayer/crossdomain/project_pr_metric.go
index f6c43f22b..1a6755967 100644
--- a/models/domainlayer/crossdomain/project_pr_metric.go
+++ b/models/domainlayer/crossdomain/project_pr_metric.go
@@ -25,13 +25,13 @@ type ProjectPrMetric struct {
 	domainlayer.DomainEntity
 	ProjectName    string `gorm:"primaryKey;type:varchar(100)"`
 	FirstCommitSha string
-	CodingTimespan *int64
+	PrCodingTime   *int64
 	FirstReviewId  string
-	ReviewLag      *int64
-	ReviewTimespan *int64
+	PrPickupTime   *int64
+	PrReviewTime   *int64
 	DeploymentId   string
-	DeployTimespan *int64
-	ChangeTimespan *int64
+	PrDeployTime   *int64
+	PrCycleTime    *int64
 }
 
 func (ProjectPrMetric) TableName() string {
diff --git a/models/domainlayer/crossdomain/project_pr_metric.go b/models/migrationscripts/20221201_add_project_pr_metric.go
similarity index 54%
copy from models/domainlayer/crossdomain/project_pr_metric.go
copy to models/migrationscripts/20221201_add_project_pr_metric.go
index f6c43f22b..ea6328106 100644
--- a/models/domainlayer/crossdomain/project_pr_metric.go
+++ b/models/migrationscripts/20221201_add_project_pr_metric.go
@@ -15,25 +15,28 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package crossdomain
+package migrationscripts
 
 import (
-	"github.com/apache/incubator-devlake/models/domainlayer"
+	"github.com/apache/incubator-devlake/errors"
+	"github.com/apache/incubator-devlake/helpers/migrationhelper"
+	"github.com/apache/incubator-devlake/models/migrationscripts/archived"
+	"github.com/apache/incubator-devlake/plugins/core"
 )
 
-type ProjectPrMetric struct {
-	domainlayer.DomainEntity
-	ProjectName    string `gorm:"primaryKey;type:varchar(100)"`
-	FirstCommitSha string
-	CodingTimespan *int64
-	FirstReviewId  string
-	ReviewLag      *int64
-	ReviewTimespan *int64
-	DeploymentId   string
-	DeployTimespan *int64
-	ChangeTimespan *int64
+type renameFiledsInProjectPrMetric struct{}
+
+func (u *renameFiledsInProjectPrMetric) Up(baseRes core.BasicRes) errors.Error {
+	return migrationhelper.AutoMigrateTables(
+		baseRes,
+		&archived.ProjectPrMetric{},
+	)
+}
+
+func (*renameFiledsInProjectPrMetric) Version() uint64 {
+	return 20221201000001
 }
 
-func (ProjectPrMetric) TableName() string {
-	return "project_pr_metrics"
+func (*renameFiledsInProjectPrMetric) Name() string {
+	return "rename fields in project pr metric tables"
 }
diff --git a/models/migrationscripts/archived/project_pr_metrics.go b/models/migrationscripts/archived/project_pr_metric.go
similarity index 89%
rename from models/migrationscripts/archived/project_pr_metrics.go
rename to models/migrationscripts/archived/project_pr_metric.go
index 03e0f5252..10288a200 100644
--- a/models/migrationscripts/archived/project_pr_metrics.go
+++ b/models/migrationscripts/archived/project_pr_metric.go
@@ -20,14 +20,14 @@ package archived
 type ProjectPrMetric struct {
 	DomainEntity
 	ProjectName    string `gorm:"primaryKey;type:varchar(100)"`
-	FirstReviewId  string
 	FirstCommitSha string
-	CodingTimespan *int64
-	ReviewLag      *int64
-	ReviewTimespan *int64
+	PrCodingTime   *int64
+	FirstReviewId  string
+	PrPickupTime   *int64
+	PrReviewTime   *int64
 	DeploymentId   string
-	DeployTimespan *int64
-	ChangeTimespan *int64
+	PrDeployTime   *int64
+	PrCycleTime    *int64
 }
 
 func (ProjectPrMetric) TableName() string {
diff --git a/models/migrationscripts/register.go b/models/migrationscripts/register.go
index 943616df1..1114d807c 100644
--- a/models/migrationscripts/register.go
+++ b/models/migrationscripts/register.go
@@ -61,5 +61,6 @@ func All() []core.MigrationScript {
 		new(addProjectToBluePrint),
 		new(addProjectIssueMetric),
 		new(addLabels),
+		new(renameFiledsInProjectPrMetric),
 	}
 }
diff --git a/plugins/dora/e2e/snapshot_tables/project_pr_metrics.csv b/plugins/dora/e2e/snapshot_tables/project_pr_metrics.csv
index 9391c7c40..1c12449b6 100644
--- a/plugins/dora/e2e/snapshot_tables/project_pr_metrics.csv
+++ b/plugins/dora/e2e/snapshot_tables/project_pr_metrics.csv
@@ -1,4 +1,4 @@
-id,project_name,first_commit_sha,coding_timespan,first_review_id,review_lag,review_timespan,deployment_id,deploy_timespan,change_timespan
+id,project_name,first_commit_sha,pr_coding_time,first_review_id,pr_pickup_time,pr_review_time,deployment_id,pr_deploy_time,pr_cycle_time
 github:GithubPullRequest:1:1043463302,project1,75ab753225b5b8acf3bc6e40e463b54b6800e7ed,,github:GithubPrReview:1:1098724785,8558,2859,task11,93134,104551
 github:GithubPullRequest:1:1048233599,project1,4f8cdefc9a9d53af16dd482c61623312eb9e9b5e,,github:GithubPrReview:1:0,194,4033,task12,76605,80832
 github:GithubPullRequest:1:1049191985,project1,4b71faf666833c0c7b915a512811e2c5e746d3de,1,github:GithubPrReview:1:1099918590,156,1712,task13,115026,116895
diff --git a/plugins/dora/tasks/change_lead_time_calculator.go b/plugins/dora/tasks/change_lead_time_calculator.go
index 1a66fc366..cf52ddac0 100644
--- a/plugins/dora/tasks/change_lead_time_calculator.go
+++ b/plugins/dora/tasks/change_lead_time_calculator.go
@@ -107,7 +107,7 @@ func CalculateChangeLeadTime(taskCtx core.SubTaskContext) errors.Error {
 				} else {
 					codingTime = codingTime / 60
 				}
-				projectPrMetric.CodingTimespan = processNegativeValue(codingTime)
+				projectPrMetric.PrCodingTime = processNegativeValue(codingTime)
 				projectPrMetric.FirstCommitSha = firstCommit.Sha
 			}
 			firstReview, err := getFirstReview(pr.Id, pr.AuthorId, db)
@@ -115,8 +115,8 @@ func CalculateChangeLeadTime(taskCtx core.SubTaskContext) errors.Error {
 				return nil, err
 			}
 			if firstReview != nil {
-				projectPrMetric.ReviewLag = processNegativeValue(int64(firstReview.CreatedDate.Sub(pr.CreatedDate).Minutes()))
-				projectPrMetric.ReviewTimespan = processNegativeValue(int64(pr.MergedDate.Sub(firstReview.CreatedDate).Minutes()))
+				projectPrMetric.PrPickupTime = processNegativeValue(int64(firstReview.CreatedDate.Sub(pr.CreatedDate).Minutes()))
+				projectPrMetric.PrReviewTime = processNegativeValue(int64(pr.MergedDate.Sub(firstReview.CreatedDate).Minutes()))
 				projectPrMetric.FirstReviewId = firstReview.ReviewId
 			}
 			deployment, err := getDeployment(pr.MergeCommitSha, pr.BaseRepoId, deploymentDiffPairs, db)
@@ -125,27 +125,27 @@ func CalculateChangeLeadTime(taskCtx core.SubTaskContext) errors.Error {
 			}
 			if deployment != nil && deployment.TaskFinishedDate != nil {
 				timespan := deployment.TaskFinishedDate.Sub(*pr.MergedDate)
-				projectPrMetric.DeployTimespan = processNegativeValue(int64(timespan.Minutes()))
+				projectPrMetric.PrDeployTime = processNegativeValue(int64(timespan.Minutes()))
 				projectPrMetric.DeploymentId = deployment.TaskId
 			} else {
 				log.Debug("deploy time of pr %v is nil\n", pr.PullRequestKey)
 			}
-			projectPrMetric.ChangeTimespan = nil
+			projectPrMetric.PrCycleTime = nil
 			var result int64
-			if projectPrMetric.CodingTimespan != nil {
-				result += *projectPrMetric.CodingTimespan
+			if projectPrMetric.PrCodingTime != nil {
+				result += *projectPrMetric.PrCodingTime
 			}
-			if projectPrMetric.ReviewLag != nil {
-				result += *projectPrMetric.ReviewLag
+			if projectPrMetric.PrPickupTime != nil {
+				result += *projectPrMetric.PrPickupTime
 			}
-			if projectPrMetric.ReviewTimespan != nil {
-				result += *projectPrMetric.ReviewTimespan
+			if projectPrMetric.PrReviewTime != nil {
+				result += *projectPrMetric.PrReviewTime
 			}
-			if projectPrMetric.DeployTimespan != nil {
-				result += *projectPrMetric.DeployTimespan
+			if projectPrMetric.PrDeployTime != nil {
+				result += *projectPrMetric.PrDeployTime
 			}
 			if result > 0 {
-				projectPrMetric.ChangeTimespan = &result
+				projectPrMetric.PrCycleTime = &result
 			}
 			return []interface{}{projectPrMetric}, nil
 		},