This is an automated email from the ASF dual-hosted git repository.
zhangliang2022 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 e68ba0cfc feat: configuable page size for plugin jira (#4924)
e68ba0cfc is described below
commit e68ba0cfc0b61eb44dbe8a01f8f701ee8f207e97
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Apr 13 21:48:30 2023 +0800
feat: configuable page size for plugin jira (#4924)
---
backend/plugins/jira/impl/impl.go | 5 +++++
backend/plugins/jira/tasks/apiv2models/issue.go | 2 +-
backend/plugins/jira/tasks/issue_collector.go | 2 +-
backend/plugins/jira/tasks/issue_extractor.go | 4 ++++
backend/plugins/jira/tasks/task_data.go | 1 +
5 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/backend/plugins/jira/impl/impl.go
b/backend/plugins/jira/impl/impl.go
index a94e1ce19..c7adc3c34 100644
--- a/backend/plugins/jira/impl/impl.go
+++ b/backend/plugins/jira/impl/impl.go
@@ -221,6 +221,11 @@ func (p Jira) PrepareTaskData(taskCtx plugin.TaskContext,
options map[string]int
}
}
+ // set default page size
+ if op.PageSize <= 0 || op.PageSize > 100 {
+ op.PageSize = 100
+ }
+
info, code, err := tasks.GetJiraServerInfo(jiraApiClient)
if err != nil || code != http.StatusOK || info == nil {
return nil, errors.HttpStatus(code).Wrap(err, "fail to get Jira
server info")
diff --git a/backend/plugins/jira/tasks/apiv2models/issue.go
b/backend/plugins/jira/tasks/apiv2models/issue.go
index dd14f468e..823bf4225 100644
--- a/backend/plugins/jira/tasks/apiv2models/issue.go
+++ b/backend/plugins/jira/tasks/apiv2models/issue.go
@@ -75,7 +75,7 @@ type Issue struct {
WatchCount int `json:"watchCount"`
IsWatching bool `json:"isWatching"`
} `json:"watches"`
- Created helper.Iso8601Time `json:"created"`
+ Created *helper.Iso8601Time `json:"created"`
Epic *struct {
ID int `json:"id"`
Key string `json:"key"`
diff --git a/backend/plugins/jira/tasks/issue_collector.go
b/backend/plugins/jira/tasks/issue_collector.go
index ef84b7aab..dbcaf60b9 100644
--- a/backend/plugins/jira/tasks/issue_collector.go
+++ b/backend/plugins/jira/tasks/issue_collector.go
@@ -81,7 +81,7 @@ func CollectIssues(taskCtx plugin.SubTaskContext)
errors.Error {
err = collectorWithState.InitCollector(api.ApiCollectorArgs{
ApiClient: data.ApiClient,
- PageSize: 100,
+ PageSize: data.Options.PageSize,
Incremental: incremental,
/*
url may use arbitrary variables from different
connection in any order, we need GoTemplate to allow more
diff --git a/backend/plugins/jira/tasks/issue_extractor.go
b/backend/plugins/jira/tasks/issue_extractor.go
index 0267f1019..6f0a2eba4 100644
--- a/backend/plugins/jira/tasks/issue_extractor.go
+++ b/backend/plugins/jira/tasks/issue_extractor.go
@@ -95,6 +95,10 @@ func extractIssues(data *JiraTaskData, mappings
*typeMappings, row *api.RawData)
return nil, err
}
var results []interface{}
+ // if the field `created` is nil, ignore it
+ if apiIssue.Fields.Created == nil {
+ return results, nil
+ }
sprints, issue, worklogs, changelogs, changelogItems, users :=
apiIssue.ExtractEntities(data.Options.ConnectionId)
for _, sprintId := range sprints {
sprintIssue := &models.JiraSprintIssue{
diff --git a/backend/plugins/jira/tasks/task_data.go
b/backend/plugins/jira/tasks/task_data.go
index 97b0174af..9ff425c80 100644
--- a/backend/plugins/jira/tasks/task_data.go
+++ b/backend/plugins/jira/tasks/task_data.go
@@ -109,6 +109,7 @@ type JiraOptions struct {
TransformationRules *JiraTransformationRule
`json:"transformationRules"`
ScopeId string
TransformationRuleId uint64
+ PageSize int
}
type JiraTaskData struct {