fix: modify lead_time_minutes to bigint (#3252)
* fix: modify lead_time_minutes to bigint
* fix: e2e-postgres
* fix: e2e-postgres
diff --git a/models/domainlayer/ticket/issue.go b/models/domainlayer/ticket/issue.go
index d132399..637e176 100644
--- a/models/domainlayer/ticket/issue.go
+++ b/models/domainlayer/ticket/issue.go
@@ -38,7 +38,7 @@
ResolutionDate *time.Time
CreatedDate *time.Time
UpdatedDate *time.Time
- LeadTimeMinutes uint
+ LeadTimeMinutes int64
ParentIssueId string `gorm:"type:varchar(255)"`
Priority string `gorm:"type:varchar(255)"`
OriginalEstimateMinutes int64
diff --git a/models/migrationscripts/20220929_modify_lead_time_minutes.go b/models/migrationscripts/20220929_modify_lead_time_minutes.go
new file mode 100644
index 0000000..ed03d11
--- /dev/null
+++ b/models/migrationscripts/20220929_modify_lead_time_minutes.go
@@ -0,0 +1,64 @@
+/*
+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 (
+ "context"
+
+ "github.com/apache/incubator-devlake/errors"
+ "gorm.io/gorm"
+)
+
+type modifyLeadTimeMinutes struct{}
+
+type newIssue struct {
+ LeadTimeMinutes int64
+}
+
+func (newIssue) TableName() string {
+ return "issues"
+}
+
+func (*modifyLeadTimeMinutes) Up(ctx context.Context, db *gorm.DB) errors.Error {
+ err := db.Migrator().RenameColumn(&newIssue{}, "lead_time_minutes", "lead_time_minutes_bak")
+ if err != nil {
+ return errors.Convert(err)
+ }
+ err = db.Migrator().AutoMigrate(&newIssue{})
+ if err != nil {
+ return errors.Convert(err)
+ }
+ err = db.Model(&newIssue{}).Where("lead_time_minutes_bak > 0").UpdateColumn("lead_time_minutes", gorm.Expr("lead_time_minutes_bak")).Error
+ if err != nil {
+ return errors.Convert(err)
+ }
+ err = db.Migrator().DropColumn(&newIssue{}, "lead_time_minutes_bak")
+ if err != nil {
+ return errors.Convert(err)
+ }
+ db.First(&newIssue{})
+ return nil
+}
+
+func (*modifyLeadTimeMinutes) Version() uint64 {
+ return 20220929145125
+}
+
+func (*modifyLeadTimeMinutes) Name() string {
+ return "modify lead_time_minutes"
+}
diff --git a/models/migrationscripts/register.go b/models/migrationscripts/register.go
index 5ac6efd..1ef74d7 100644
--- a/models/migrationscripts/register.go
+++ b/models/migrationscripts/register.go
@@ -47,5 +47,6 @@
new(addCommitFilePathLength),
new(renamePipelineCommits),
new(commitLineChange),
+ new(modifyLeadTimeMinutes),
}
}
diff --git a/plugins/bitbucket/tasks/issue_convertor.go b/plugins/bitbucket/tasks/issue_convertor.go
index b09eaf0..d18a77e 100644
--- a/plugins/bitbucket/tasks/issue_convertor.go
+++ b/plugins/bitbucket/tasks/issue_convertor.go
@@ -82,7 +82,7 @@
Priority: issue.Priority,
Type: issue.Type,
OriginalStatus: issue.State,
- LeadTimeMinutes: issue.LeadTimeMinutes,
+ LeadTimeMinutes: int64(issue.LeadTimeMinutes),
Url: issue.Url,
CreatedDate: &issue.BitbucketCreatedAt,
UpdatedDate: &issue.BitbucketUpdatedAt,
diff --git a/plugins/gitee/tasks/issue_convertor.go b/plugins/gitee/tasks/issue_convertor.go
index d5cbcc5..b864263 100644
--- a/plugins/gitee/tasks/issue_convertor.go
+++ b/plugins/gitee/tasks/issue_convertor.go
@@ -77,7 +77,7 @@
AssigneeName: issue.AssigneeName,
CreatorId: accountIdGen.Generate(data.Options.ConnectionId, issue.AuthorId),
CreatorName: issue.AuthorName,
- LeadTimeMinutes: issue.LeadTimeMinutes,
+ LeadTimeMinutes: int64(issue.LeadTimeMinutes),
Url: issue.Url,
CreatedDate: &issue.GiteeCreatedAt,
UpdatedDate: &issue.GiteeUpdatedAt,
diff --git a/plugins/github/tasks/issue_convertor.go b/plugins/github/tasks/issue_convertor.go
index 24e238f..1545804 100644
--- a/plugins/github/tasks/issue_convertor.go
+++ b/plugins/github/tasks/issue_convertor.go
@@ -85,7 +85,7 @@
AssigneeName: issue.AssigneeName,
CreatorId: accountIdGen.Generate(data.Options.ConnectionId, issue.AuthorId),
CreatorName: issue.AuthorName,
- LeadTimeMinutes: issue.LeadTimeMinutes,
+ LeadTimeMinutes: int64(issue.LeadTimeMinutes),
Url: issue.Url,
CreatedDate: &issue.GithubCreatedAt,
UpdatedDate: &issue.GithubUpdatedAt,
diff --git a/plugins/gitlab/tasks/issue_convertor.go b/plugins/gitlab/tasks/issue_convertor.go
index aa5c34f..c5b7134 100644
--- a/plugins/gitlab/tasks/issue_convertor.go
+++ b/plugins/gitlab/tasks/issue_convertor.go
@@ -74,7 +74,7 @@
Description: issue.Body,
Priority: issue.Priority,
Type: issue.Type,
- LeadTimeMinutes: issue.LeadTimeMinutes,
+ LeadTimeMinutes: int64(issue.LeadTimeMinutes),
Url: issue.Url,
CreatedDate: &issue.GitlabCreatedAt,
UpdatedDate: &issue.GitlabUpdatedAt,
diff --git a/plugins/jira/tasks/issue_convertor.go b/plugins/jira/tasks/issue_convertor.go
index 6f69f80..87ca8d6 100644
--- a/plugins/jira/tasks/issue_convertor.go
+++ b/plugins/jira/tasks/issue_convertor.go
@@ -101,7 +101,7 @@
Priority: jiraIssue.PriorityName,
CreatedDate: &jiraIssue.Created,
UpdatedDate: &jiraIssue.Updated,
- LeadTimeMinutes: jiraIssue.LeadTimeMinutes,
+ LeadTimeMinutes: int64(jiraIssue.LeadTimeMinutes),
TimeSpentMinutes: jiraIssue.SpentMinutes,
}
if jiraIssue.CreatorAccountId != "" {
diff --git a/plugins/tapd/tasks/bug_converter.go b/plugins/tapd/tasks/bug_converter.go
index 68ee6f0..364ad03 100644
--- a/plugins/tapd/tasks/bug_converter.go
+++ b/plugins/tapd/tasks/bug_converter.go
@@ -82,7 +82,7 @@
OriginalStatus: toolL.Status,
}
if domainL.ResolutionDate != nil && domainL.CreatedDate != nil {
- domainL.LeadTimeMinutes = uint(domainL.ResolutionDate.Sub(*domainL.CreatedDate).Minutes())
+ domainL.LeadTimeMinutes = int64(domainL.ResolutionDate.Sub(*domainL.CreatedDate).Minutes())
}
results := make([]interface{}, 0, 2)
boardIssue := &ticket.BoardIssue{
diff --git a/plugins/tapd/tasks/story_converter.go b/plugins/tapd/tasks/story_converter.go
index 56fdab3..d458f7f 100644
--- a/plugins/tapd/tasks/story_converter.go
+++ b/plugins/tapd/tasks/story_converter.go
@@ -85,7 +85,7 @@
Component: toolL.Feature,
}
if domainL.ResolutionDate != nil && domainL.CreatedDate != nil {
- domainL.LeadTimeMinutes = uint(domainL.ResolutionDate.Sub(*domainL.CreatedDate).Minutes())
+ domainL.LeadTimeMinutes = int64(domainL.ResolutionDate.Sub(*domainL.CreatedDate).Minutes())
}
results := make([]interface{}, 0, 2)
boardIssue := &ticket.BoardIssue{
diff --git a/plugins/tapd/tasks/task_converter.go b/plugins/tapd/tasks/task_converter.go
index 90f8adf..daca606 100644
--- a/plugins/tapd/tasks/task_converter.go
+++ b/plugins/tapd/tasks/task_converter.go
@@ -82,7 +82,7 @@
AssigneeName: toolL.Owner,
}
if domainL.ResolutionDate != nil && domainL.CreatedDate != nil {
- domainL.LeadTimeMinutes = uint(domainL.ResolutionDate.Sub(*domainL.CreatedDate).Minutes())
+ domainL.LeadTimeMinutes = int64(domainL.ResolutionDate.Sub(*domainL.CreatedDate).Minutes())
}
results := make([]interface{}, 0, 2)
boardIssue := &ticket.BoardIssue{
diff --git a/plugins/webhook/api/issue.go b/plugins/webhook/api/issue.go
index b93dae2..3d09d89 100644
--- a/plugins/webhook/api/issue.go
+++ b/plugins/webhook/api/issue.go
@@ -107,7 +107,7 @@
ResolutionDate: request.ResolutionDate,
CreatedDate: request.CreatedDate,
UpdatedDate: request.UpdatedDate,
- LeadTimeMinutes: request.LeadTimeMinutes,
+ LeadTimeMinutes: int64(request.LeadTimeMinutes),
Priority: request.Priority,
OriginalEstimateMinutes: request.OriginalEstimateMinutes,
TimeSpentMinutes: request.TimeSpentMinutes,