From a3f50edd165962f06e81a268a5d1ef4ac80e0dea Mon Sep 17 00:00:00 2001 From: "moon.li" Date: Thu, 16 Jun 2022 17:17:40 +0800 Subject: [PATCH 1/2] add jira issue label Signed-off-by: moon.li --- plugins/jira/jira.go | 1 - plugins/jira/models/issue_label.go | 19 +++++++ .../migrationscripts/updateSchemas20220616.go | 52 +++++++++++++++++++ plugins/jira/tasks/apiv2models/issue.go | 2 +- plugins/jira/tasks/issue_extractor.go | 10 ++++ 5 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 plugins/jira/models/issue_label.go create mode 100644 plugins/jira/models/migrationscripts/updateSchemas20220616.go diff --git a/plugins/jira/jira.go b/plugins/jira/jira.go index 6fe007300cd..92a9a9aaae3 100644 --- a/plugins/jira/jira.go +++ b/plugins/jira/jira.go @@ -156,7 +156,6 @@ func (plugin Jira) MigrationScripts() []migration.Script { new(migrationscripts.UpdateSchemas20220525), new(migrationscripts.UpdateSchemas20220526), new(migrationscripts.UpdateSchemas20220527), - new(migrationscripts.UpdateSchemas20220614), } } diff --git a/plugins/jira/models/issue_label.go b/plugins/jira/models/issue_label.go new file mode 100644 index 00000000000..0f9cfbdd801 --- /dev/null +++ b/plugins/jira/models/issue_label.go @@ -0,0 +1,19 @@ +package models + +import ( + "github.com/apache/incubator-devlake/models/common" +) + +// Please note that Issue Labels can also apply to Pull Requests. +// Pull Requests are considered Issues in GitHub. + +type JiraIssueLabel struct { + ConnectionId uint64 `gorm:"primaryKey;autoIncrement:false"` + IssueId uint64 `gorm:"primaryKey;autoIncrement:false"` + LabelName string `gorm:"primaryKey;type:varchar(255)"` + common.NoPKModel +} + +func (JiraIssueLabel) TableName() string { + return "_tool_jira_issue_labels" +} diff --git a/plugins/jira/models/migrationscripts/updateSchemas20220616.go b/plugins/jira/models/migrationscripts/updateSchemas20220616.go new file mode 100644 index 00000000000..a02f7fda6fe --- /dev/null +++ b/plugins/jira/models/migrationscripts/updateSchemas20220616.go @@ -0,0 +1,52 @@ +/* +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/models/migrationscripts/archived" + + "gorm.io/gorm" +) + +type JiraIssueLabel0616 struct { + ConnectionId uint64 `gorm:"primaryKey;autoIncrement:false"` + IssueId uint64 `gorm:"primaryKey;autoIncrement:false"` + LabelName string `gorm:"primaryKey;type:varchar(255)"` + archived.NoPKModel +} + +func (JiraIssueLabel0616) TableName() string { + return "_tool_jira_issue_labels" +} + +type UpdateSchemas20220616 struct{} + +func (*UpdateSchemas20220616) Up(ctx context.Context, db *gorm.DB) error { + + err := db.Migrator().AutoMigrate(JiraIssueLabel0616{}) + return err +} + +func (*UpdateSchemas20220616) Version() uint64 { + return 20220616154646 +} + +func (*UpdateSchemas20220616) Name() string { + return "add jira issue labels" +} diff --git a/plugins/jira/tasks/apiv2models/issue.go b/plugins/jira/tasks/apiv2models/issue.go index c6a70d8066b..9efafde7e92 100644 --- a/plugins/jira/tasks/apiv2models/issue.go +++ b/plugins/jira/tasks/apiv2models/issue.go @@ -91,7 +91,7 @@ type Issue struct { Name string `json:"name"` ID uint64 `json:"id,string"` } `json:"priority"` - Labels []interface{} `json:"labels"` + Labels []string `json:"labels"` Timeestimate interface{} `json:"timeestimate"` Aggregatetimeoriginalestimate interface{} `json:"aggregatetimeoriginalestimate"` Versions []interface{} `json:"versions"` diff --git a/plugins/jira/tasks/issue_extractor.go b/plugins/jira/tasks/issue_extractor.go index 62acc4f70cc..e0e235eba35 100644 --- a/plugins/jira/tasks/issue_extractor.go +++ b/plugins/jira/tasks/issue_extractor.go @@ -135,6 +135,16 @@ func ExtractIssues(taskCtx core.SubTaskContext) error { BoardId: boardId, IssueId: issue.IssueId, }) + labels := apiIssue.Fields.Labels + for _, v := range labels { + issueLabel := &models.JiraIssueLabel{ + IssueId: issue.IssueId, + LabelName: v, + ConnectionId: data.Options.ConnectionId, + } + results = append(results, issueLabel) + } + return results, nil return results, nil }, }) From df50b9ca203a76390837f448f3641c7f942734f1 Mon Sep 17 00:00:00 2001 From: Warren Chen Date: Thu, 16 Jun 2022 20:30:46 +0800 Subject: [PATCH 2/2] fix(jira): minor bug (#2225) closes #2218 --- plugins/jira/jira.go | 2 ++ plugins/jira/tasks/issue_extractor.go | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/jira/jira.go b/plugins/jira/jira.go index 92a9a9aaae3..5c10467a8fc 100644 --- a/plugins/jira/jira.go +++ b/plugins/jira/jira.go @@ -156,6 +156,8 @@ func (plugin Jira) MigrationScripts() []migration.Script { new(migrationscripts.UpdateSchemas20220525), new(migrationscripts.UpdateSchemas20220526), new(migrationscripts.UpdateSchemas20220527), + new(migrationscripts.UpdateSchemas20220614), + new(migrationscripts.UpdateSchemas20220616), } } diff --git a/plugins/jira/tasks/issue_extractor.go b/plugins/jira/tasks/issue_extractor.go index e0e235eba35..c4e9cca5001 100644 --- a/plugins/jira/tasks/issue_extractor.go +++ b/plugins/jira/tasks/issue_extractor.go @@ -145,7 +145,6 @@ func ExtractIssues(taskCtx core.SubTaskContext) error { results = append(results, issueLabel) } return results, nil - return results, nil }, })