Merge pull request #1691 from merico-dev/fix#1690
fix: missing users for plugin jira
diff --git a/plugins/jira/jira.go b/plugins/jira/jira.go
index 5003ace..465eb5c 100644
--- a/plugins/jira/jira.go
+++ b/plugins/jira/jira.go
@@ -69,7 +69,10 @@
{Name: "convertSprints", EntryPoint: tasks.ConvertSprints, EnabledByDefault: true, Description: "convert Jira sprints"},
{Name: "convertIssueCommits", EntryPoint: tasks.ConvertIssueCommits, EnabledByDefault: true, Description: "convert Jira issue commits"},
- {Name: "convertIssueRepoCommits", EntryPoint: tasks.ConvertIssueRepoCommits, EnabledByDefault: false, Description: "convert Jira issue repo commits"}}
+ {Name: "convertIssueRepoCommits", EntryPoint: tasks.ConvertIssueRepoCommits, EnabledByDefault: false, Description: "convert Jira issue repo commits"},
+
+ {Name: "ConvertUsers", EntryPoint: tasks.ConvertUsers, EnabledByDefault: true, Description: "convert Jira users"},
+ }
}
func (plugin Jira) PrepareTaskData(taskCtx core.TaskContext, options map[string]interface{}) (interface{}, error) {
diff --git a/plugins/jira/tasks/apiv2models/changelog.go b/plugins/jira/tasks/apiv2models/changelog.go
index a6806a9..c811e3b 100644
--- a/plugins/jira/tasks/apiv2models/changelog.go
+++ b/plugins/jira/tasks/apiv2models/changelog.go
@@ -7,27 +7,13 @@
)
type Changelog struct {
- ID uint64 `json:"id,string"`
- Author struct {
- Self string `json:"self"`
- Name string `json:"name"`
- Key string `json:"key"`
- EmailAddress string `json:"emailAddress"`
- AvatarUrls struct {
- Four8X48 string `json:"48x48"`
- Two4X24 string `json:"24x24"`
- One6X16 string `json:"16x16"`
- Three2X32 string `json:"32x32"`
- } `json:"avatarUrls"`
- DisplayName string `json:"displayName"`
- Active bool `json:"active"`
- TimeZone string `json:"timeZone"`
- } `json:"author"`
+ ID uint64 `json:"id,string"`
+ Author User `json:"author"`
Created core.Iso8601Time `json:"created"`
Items []ChangelogItem `json:"items"`
}
-func (c Changelog) ToToolLayer(sourceId, issueId uint64) *models.JiraChangelog {
+func (c Changelog) ToToolLayer(sourceId, issueId uint64) (*models.JiraChangelog, *models.JiraUser) {
return &models.JiraChangelog{
SourceId: sourceId,
ChangelogId: c.ID,
@@ -36,7 +22,7 @@
AuthorDisplayName: c.Author.DisplayName,
AuthorActive: c.Author.Active,
Created: c.Created.ToTime(),
- }
+ }, c.Author.ToToolLayer(sourceId)
}
type ChangelogItem struct {
diff --git a/plugins/jira/tasks/apiv2models/issue.go b/plugins/jira/tasks/apiv2models/issue.go
index ba93c6c..8dd79a4 100644
--- a/plugins/jira/tasks/apiv2models/issue.go
+++ b/plugins/jira/tasks/apiv2models/issue.go
@@ -106,22 +106,8 @@
Summary string `json:"summary"`
Creator User `json:"creator"`
Subtasks []interface{} `json:"subtasks"`
- Reporter struct {
- Self string `json:"self"`
- Name string `json:"name"`
- Key string `json:"key"`
- EmailAddress string `json:"emailAddress"`
- AvatarUrls struct {
- Four8X48 string `json:"48x48"`
- Two4X24 string `json:"24x24"`
- One6X16 string `json:"16x16"`
- Three2X32 string `json:"32x32"`
- } `json:"avatarUrls"`
- DisplayName string `json:"displayName"`
- Active bool `json:"active"`
- TimeZone string `json:"timeZone"`
- } `json:"reporter"`
- Aggregateprogress struct {
+ Reporter User `json:"reporter"`
+ Aggregateprogress struct {
Progress int `json:"progress"`
Total int `json:"total"`
} `json:"aggregateprogress"`
@@ -248,11 +234,12 @@
return resp.Issues, nil
}
-func (i Issue) ExtractEntities(sourceId uint64, epicField, storyPointField string) ([]uint64, *models.JiraIssue, bool, []*models.JiraWorklog, []*models.JiraChangelog, []*models.JiraChangelogItem) {
+func (i Issue) ExtractEntities(sourceId uint64, epicField, storyPointField string) ([]uint64, *models.JiraIssue, bool, []*models.JiraWorklog, []*models.JiraChangelog, []*models.JiraChangelogItem, []*models.JiraUser) {
issue := i.toToolLayer(sourceId, epicField, storyPointField)
var worklogs []*models.JiraWorklog
var changelogs []*models.JiraChangelog
var changelogItems []*models.JiraChangelogItem
+ var users []*models.JiraUser
var needCollectWorklog bool
var sprints []uint64
if i.Fields.Worklog != nil {
@@ -266,7 +253,9 @@
}
if i.Changelog != nil {
for _, changelog := range i.Changelog.Histories {
- changelogs = append(changelogs, changelog.ToToolLayer(sourceId, i.ID))
+ cl, user := changelog.ToToolLayer(sourceId, i.ID)
+ changelogs = append(changelogs, cl)
+ users = append(users, user)
for _, item := range changelog.Items {
changelogItems = append(changelogItems, item.ToToolLayer(sourceId, changelog.ID))
}
@@ -278,5 +267,9 @@
for _, sprint := range i.Fields.ClosedSprints {
sprints = append(sprints, sprint.ID)
}
- return sprints, issue, needCollectWorklog, worklogs, changelogs, changelogItems
+ users = append(users, i.Fields.Creator.ToToolLayer(sourceId), i.Fields.Reporter.ToToolLayer(sourceId))
+ if i.Fields.Assignee != nil {
+ users = append(users, i.Fields.Assignee.ToToolLayer(sourceId))
+ }
+ return sprints, issue, needCollectWorklog, worklogs, changelogs, changelogItems, users
}
diff --git a/plugins/jira/tasks/changelog_extractor.go b/plugins/jira/tasks/changelog_extractor.go
index 594a90e..b5fd7da 100644
--- a/plugins/jira/tasks/changelog_extractor.go
+++ b/plugins/jira/tasks/changelog_extractor.go
@@ -44,7 +44,8 @@
if err != nil {
return nil, err
}
- result = append(result, changelog.ToToolLayer(sourceId, input.IssueId))
+ cl, user := changelog.ToToolLayer(sourceId, input.IssueId)
+ result = append(result, cl, user)
for _, item := range changelog.Items {
result = append(result, item.ToToolLayer(sourceId, changelog.ID))
}
diff --git a/plugins/jira/tasks/issues_extractor.go b/plugins/jira/tasks/issues_extractor.go
index f8bd08f..d0d2739 100644
--- a/plugins/jira/tasks/issues_extractor.go
+++ b/plugins/jira/tasks/issues_extractor.go
@@ -85,7 +85,7 @@
return nil, err
}
var results []interface{}
- sprints, issue, _, worklogs, changelogs, changelogItems := apiIssue.ExtractEntities(data.Source.ID, data.Source.EpicKeyField, data.Source.StoryPointField)
+ sprints, issue, _, worklogs, changelogs, changelogItems, users := apiIssue.ExtractEntities(data.Source.ID, data.Source.EpicKeyField, data.Source.StoryPointField)
for _, sprintId := range sprints {
sprintIssue := &models.JiraSprintIssue{
SourceId: data.Source.ID,
@@ -111,6 +111,9 @@
for _, changelogItem := range changelogItems {
results = append(results, changelogItem)
}
+ for _, user := range users {
+ results = append(results, user)
+ }
results = append(results, &models.JiraBoardIssue{
SourceId: sourceId,
BoardId: boardId,