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,