This is an automated email from the ASF dual-hosted git repository.

abeizn pushed a commit to branch jira-subtask
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/jira-subtask by this push:
     new d667d4f04 feat: jira is subtask trans to type SUBTASK
d667d4f04 is described below

commit d667d4f046877d49736269cea3408fea5d32bc76
Author: abeizn <[email protected]>
AuthorDate: Tue Jun 11 20:17:09 2024 +0800

    feat: jira is subtask trans to type SUBTASK
---
 backend/core/models/domainlayer/ticket/issue.go    |  1 +
 backend/plugins/jira/models/issue.go               |  1 +
 .../20240611_add_subtask_to_issue.go               | 51 ++++++++++++++++++++++
 .../jira/models/migrationscripts/register.go       |  1 +
 backend/plugins/jira/tasks/issue_convertor.go      |  3 ++
 backend/plugins/jira/tasks/issue_extractor.go      |  4 ++
 6 files changed, 61 insertions(+)

diff --git a/backend/core/models/domainlayer/ticket/issue.go 
b/backend/core/models/domainlayer/ticket/issue.go
index 13d2c1b03..7f29404d8 100644
--- a/backend/core/models/domainlayer/ticket/issue.go
+++ b/backend/core/models/domainlayer/ticket/issue.go
@@ -64,6 +64,7 @@ const (
        REQUIREMENT = "REQUIREMENT"
        INCIDENT    = "INCIDENT"
        TASK        = "TASK"
+       SUBTASK     = "SUBTASK"
 
        // status
        TODO        = "TODO"
diff --git a/backend/plugins/jira/models/issue.go 
b/backend/plugins/jira/models/issue.go
index d7c44edb6..0b6294490 100644
--- a/backend/plugins/jira/models/issue.go
+++ b/backend/plugins/jira/models/issue.go
@@ -63,6 +63,7 @@ type JiraIssue struct {
        StdType                  string `gorm:"type:varchar(255)"`
        StdStatus                string `gorm:"type:varchar(255)"`
        Components               string `gorm:"type:varchar(255)"`
+       Subtask                  bool
        ChangelogTotal           int
        WorklogTotal             int
        common.NoPKModel
diff --git 
a/backend/plugins/jira/models/migrationscripts/20240611_add_subtask_to_issue.go 
b/backend/plugins/jira/models/migrationscripts/20240611_add_subtask_to_issue.go
new file mode 100644
index 000000000..13d0f1f17
--- /dev/null
+++ 
b/backend/plugins/jira/models/migrationscripts/20240611_add_subtask_to_issue.go
@@ -0,0 +1,51 @@
+/*
+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 (
+       "github.com/apache/incubator-devlake/core/context"
+       "github.com/apache/incubator-devlake/core/errors"
+)
+
+type jiraIssue20240611 struct {
+       Subtask bool
+}
+
+func (jiraIssue20240611) TableName() string {
+       return "_tool_jira_issues"
+}
+
+type addSubtaskToIssue struct{}
+
+func (script *addSubtaskToIssue) Up(basicRes context.BasicRes) errors.Error {
+       db := basicRes.GetDal()
+       err := db.AutoMigrate(&jiraIssue20240611{})
+       if err != nil {
+               return err
+       }
+       // force full issue extraction so issue.worklog_total can be updated
+       return db.Exec("DELETE FROM _devlake_subtask_states WHERE plugin = ? 
AND subtask = ?", "jira", "extractIssues")
+}
+
+func (*addSubtaskToIssue) Version() uint64 {
+       return 20240514145131
+}
+
+func (*addSubtaskToIssue) Name() string {
+       return "add subtask to _tool_jira_issues"
+}
diff --git a/backend/plugins/jira/models/migrationscripts/register.go 
b/backend/plugins/jira/models/migrationscripts/register.go
index 1a8f8367b..be88eda7d 100644
--- a/backend/plugins/jira/models/migrationscripts/register.go
+++ b/backend/plugins/jira/models/migrationscripts/register.go
@@ -48,5 +48,6 @@ func All() []plugin.MigrationScript {
                new(addComponents20230412),
                new(addFilterJQL),
                new(addWorklogToIssue),
+               new(addSubtaskToIssue),
        }
 }
diff --git a/backend/plugins/jira/tasks/issue_convertor.go 
b/backend/plugins/jira/tasks/issue_convertor.go
index f30037182..d7da08e87 100644
--- a/backend/plugins/jira/tasks/issue_convertor.go
+++ b/backend/plugins/jira/tasks/issue_convertor.go
@@ -132,6 +132,9 @@ func ConvertIssues(subtaskCtx plugin.SubTaskContext) 
errors.Error {
                        if jiraIssue.ParentId != 0 {
                                issue.ParentIssueId = 
issueIdGen.Generate(data.Options.ConnectionId, jiraIssue.ParentId)
                        }
+                       if jiraIssue.Subtask {
+                               issue.Type = ticket.SUBTASK
+                       }
                        result = append(result, issue)
                        boardIssue := &ticket.BoardIssue{
                                BoardId: boardId,
diff --git a/backend/plugins/jira/tasks/issue_extractor.go 
b/backend/plugins/jira/tasks/issue_extractor.go
index bac817402..7dcb6da76 100644
--- a/backend/plugins/jira/tasks/issue_extractor.go
+++ b/backend/plugins/jira/tasks/issue_extractor.go
@@ -205,6 +205,10 @@ func extractIssues(data *JiraTaskData, mappings 
*typeMappings, row *api.RawData)
                }
                results = append(results, issueLink)
        }
+
+       // is subtask
+       issue.Subtask = apiIssue.Fields.Issuetype.Subtask
+
        return results, nil
 }
 

Reply via email to