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 {

Reply via email to