This is an automated email from the ASF dual-hosted git repository.
warren 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 d49f7117 refactor: remove code enriching
d49f7117 is described below
commit d49f7117a4cfabe29d61af4db2f515b15bcfa85c
Author: zhangliang <[email protected]>
AuthorDate: Tue May 31 09:34:56 2022 +0800
refactor: remove code enriching
---
models/domainlayer/ticket/sprint.go | 9 +-
models/migrationscripts/register.go | 1 +
.../updateSchemas20220528.go} | 59 ++-
plugins/jira/jira.go | 1 +
plugins/jira/tasks/changelog_convertor.go | 16 +-
plugins/jira/tasks/sprint_issues_convertor.go | 432 ++-------------------
.../tapd/tasks/issue_assign_history_converter.go | 76 ----
.../tapd/tasks/issue_sprint_history_converter.go | 77 ----
.../tapd/tasks/issue_status_history_converter.go | 75 ----
9 files changed, 76 insertions(+), 670 deletions(-)
diff --git a/models/domainlayer/ticket/sprint.go
b/models/domainlayer/ticket/sprint.go
index 189a1108..bd89d6e7 100644
--- a/models/domainlayer/ticket/sprint.go
+++ b/models/domainlayer/ticket/sprint.go
@@ -43,11 +43,6 @@ type Sprint struct {
type SprintIssue struct {
common.NoPKModel
- SprintId string `gorm:"primaryKey;type:varchar(255)"`
- IssueId string `gorm:"primaryKey;type:varchar(255)"`
- IsRemoved bool
- AddedDate *time.Time
- RemovedDate *time.Time
- AddedStage *string `gorm:"type:varchar(255)"`
- ResolvedStage *string `gorm:"type:varchar(255)"`
+ SprintId string `gorm:"primaryKey;type:varchar(255)"`
+ IssueId string `gorm:"primaryKey;type:varchar(255)"`
}
diff --git a/models/migrationscripts/register.go
b/models/migrationscripts/register.go
index 8805fdff..d7ee8e38 100644
--- a/models/migrationscripts/register.go
+++ b/models/migrationscripts/register.go
@@ -26,5 +26,6 @@ func RegisterAll() {
new(updateSchemas20220505), new(updateSchemas20220507),
new(updateSchemas20220510),
new(updateSchemas20220513), new(updateSchemas20220524),
new(updateSchemas20220526),
new(updateSchemas20220527),
+ new(updateSchemas20220528),
}, "Framework")
}
diff --git a/models/domainlayer/ticket/sprint.go
b/models/migrationscripts/updateSchemas20220528.go
similarity index 54%
copy from models/domainlayer/ticket/sprint.go
copy to models/migrationscripts/updateSchemas20220528.go
index 189a1108..755c3502 100644
--- a/models/domainlayer/ticket/sprint.go
+++ b/models/migrationscripts/updateSchemas20220528.go
@@ -15,33 +15,18 @@ See the License for the specific language governing
permissions and
limitations under the License.
*/
-package ticket
+package migrationscripts
import (
- "github.com/apache/incubator-devlake/models/common"
+ "context"
"time"
- "github.com/apache/incubator-devlake/models/domainlayer"
-)
+ "gorm.io/gorm"
-var (
- BeforeSprint = "BEFORE_SPRINT"
- DuringSprint = "DURING_SPRINT"
- AfterSprint = "AFTER_SPRINT"
+ "github.com/apache/incubator-devlake/models/common"
)
-type Sprint struct {
- domainlayer.DomainEntity
- Name string `gorm:"type:varchar(255)"`
- Url string `gorm:"type:varchar(255)"`
- Status string `gorm:"type:varchar(100)"`
- StartedDate *time.Time
- EndedDate *time.Time
- CompletedDate *time.Time
- OriginalBoardID string `gorm:"type:varchar(255)"`
-}
-
-type SprintIssue struct {
+type SprintIssue20220528 struct {
common.NoPKModel
SprintId string `gorm:"primaryKey;type:varchar(255)"`
IssueId string `gorm:"primaryKey;type:varchar(255)"`
@@ -51,3 +36,37 @@ type SprintIssue struct {
AddedStage *string `gorm:"type:varchar(255)"`
ResolvedStage *string `gorm:"type:varchar(255)"`
}
+
+func (SprintIssue20220528) TableName() string {
+ return "sprint_issues"
+}
+
+type updateSchemas20220528 struct{}
+
+func (*updateSchemas20220528) Up(ctx context.Context, db *gorm.DB) error {
+ err := db.Migrator().DropColumn(&SprintIssue20220528{}, "is_removed")
+ if err != nil {
+ return err
+ }
+ err = db.Migrator().DropColumn(&SprintIssue20220528{}, "added_date")
+ if err != nil {
+ return err
+ }
+ err = db.Migrator().DropColumn(&SprintIssue20220528{}, "removed_date")
+ if err != nil {
+ return err
+ }
+ err = db.Migrator().DropColumn(&SprintIssue20220528{}, "added_stage")
+ if err != nil {
+ return err
+ }
+ return db.Migrator().DropColumn(&SprintIssue20220528{},
"resolved_stage")
+}
+
+func (*updateSchemas20220528) Version() uint64 {
+ return 20220528110537
+}
+
+func (*updateSchemas20220528) Name() string {
+ return "remove columns: is_removed, added_date, removed_date,
added_stage, resolved_stage"
+}
diff --git a/plugins/jira/jira.go b/plugins/jira/jira.go
index d401bd03..9f758190 100644
--- a/plugins/jira/jira.go
+++ b/plugins/jira/jira.go
@@ -86,6 +86,7 @@ func (plugin Jira) SubTaskMetas() []core.SubTaskMeta {
{Name: "convertChangelogs", EntryPoint:
tasks.ConvertChangelogs, EnabledByDefault: true, Description: "convert Jira
change logs"},
{Name: "convertSprints", EntryPoint: tasks.ConvertSprints,
EnabledByDefault: true, Description: "convert Jira sprints"},
+ {Name: "convertSprintIssues", EntryPoint:
tasks.ConvertSprintIssues, EnabledByDefault: true, Description: "convert Jira
sprint_issues"},
{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"},
diff --git a/plugins/jira/tasks/changelog_convertor.go
b/plugins/jira/tasks/changelog_convertor.go
index cc8be29f..19693146 100644
--- a/plugins/jira/tasks/changelog_convertor.go
+++ b/plugins/jira/tasks/changelog_convertor.go
@@ -42,11 +42,6 @@ func ConvertChangelogs(taskCtx core.SubTaskContext) error {
connectionId := data.Connection.ID
boardId := data.Options.BoardId
logger := taskCtx.GetLogger()
- sprintIssueConverter, err := NewSprintIssueConverter(taskCtx)
- if err != nil {
- logger.Info(err.Error())
- return err
- }
db := taskCtx.GetDb()
logger.Info("covert changelog")
// select all changelogs belongs to the board
@@ -98,7 +93,6 @@ func ConvertChangelogs(taskCtx core.SubTaskContext) error {
ToValue: row.ToString,
CreatedDate: row.Created,
}
- sprintIssueConverter.FeedIn(connectionId, *row)
return []interface{}{changelog}, nil
},
})
@@ -107,13 +101,5 @@ func ConvertChangelogs(taskCtx core.SubTaskContext) error {
return err
}
- err = converter.Execute()
- if err != nil {
- return err
- }
- err = sprintIssueConverter.CreateSprintIssue()
- if err != nil {
- return err
- }
- return sprintIssueConverter.SaveAssigneeHistory()
+ return converter.Execute()
}
diff --git a/plugins/jira/tasks/sprint_issues_convertor.go
b/plugins/jira/tasks/sprint_issues_convertor.go
index 323893d8..0a752499 100644
--- a/plugins/jira/tasks/sprint_issues_convertor.go
+++ b/plugins/jira/tasks/sprint_issues_convertor.go
@@ -18,423 +18,55 @@ limitations under the License.
package tasks
import (
- "fmt"
- "strconv"
- "strings"
- "time"
+ "reflect"
"github.com/apache/incubator-devlake/models/domainlayer/didgen"
"github.com/apache/incubator-devlake/models/domainlayer/ticket"
"github.com/apache/incubator-devlake/plugins/core"
+ "github.com/apache/incubator-devlake/plugins/helper"
"github.com/apache/incubator-devlake/plugins/jira/models"
- "gorm.io/gorm"
- "gorm.io/gorm/clause"
)
-const (
- BatchSize = 1000
-)
-
-type SprintIssuesConverter struct {
- db *gorm.DB
- logger core.Logger
- sprintIdGen *didgen.DomainIdGenerator
- issueIdGen *didgen.DomainIdGenerator
- userIdGen *didgen.DomainIdGenerator
- sprints map[string]*models.JiraSprint
- sprintIssue map[string]*ticket.SprintIssue
- status map[string]*ticket.IssueStatusHistory
- assignee map[string]*ticket.IssueAssigneeHistory
- assigneeDefault map[string]*ticket.IssueAssigneeHistory
- sprintsHistory map[string]*ticket.IssueSprintsHistory
- jiraIssue map[string]*models.JiraIssue
-}
-
-func NewSprintIssueConverter(taskCtx core.SubTaskContext)
(*SprintIssuesConverter, error) {
+func ConvertSprintIssues(taskCtx core.SubTaskContext) error {
+ db := taskCtx.GetDb()
data := taskCtx.GetData().(*JiraTaskData)
- connectionId := data.Connection.ID
- boardId := data.Options.BoardId
- converter := &SprintIssuesConverter{
- db: taskCtx.GetDb(),
- logger: taskCtx.GetLogger(),
- sprintIdGen:
didgen.NewDomainIdGenerator(&models.JiraSprint{}),
- issueIdGen:
didgen.NewDomainIdGenerator(&models.JiraIssue{}),
- userIdGen:
didgen.NewDomainIdGenerator(&models.JiraUser{}),
- sprints: make(map[string]*models.JiraSprint),
- sprintIssue: make(map[string]*ticket.SprintIssue),
- status: make(map[string]*ticket.IssueStatusHistory),
- assignee: make(map[string]*ticket.IssueAssigneeHistory),
- assigneeDefault: make(map[string]*ticket.IssueAssigneeHistory),
- sprintsHistory: make(map[string]*ticket.IssueSprintsHistory),
- jiraIssue: make(map[string]*models.JiraIssue),
- }
- return converter, converter.setupSprintIssue(connectionId, boardId)
-}
-
-func (c *SprintIssuesConverter) FeedIn(connectionId uint64, cl
ChangelogItemResult) {
- if cl.Field == "status" {
- err := c.handleStatus(connectionId, cl)
- if err != nil {
- return
- }
- }
- if cl.Field == "assignee" {
- err := c.handleAssignee(connectionId, cl)
- if err != nil {
- return
- }
- }
- if cl.Field != "Sprint" {
- return
- }
- from, to, err := c.parseFromTo(cl.FromValue, cl.ToValue)
- if err != nil {
- return
- }
- for sprintId := range from {
- err = c.handleFrom(connectionId, sprintId, cl)
- if err != nil {
- c.logger.Error("handle from error:", err)
- return
- }
- }
- for sprintId := range to {
- err = c.handleTo(connectionId, sprintId, cl)
- if err != nil {
- c.logger.Error("handle to error:", err)
- return
- }
- }
-}
-
-func (c *SprintIssuesConverter) CreateSprintIssue() error {
- var err error
- cache := make([]*ticket.SprintIssue, 0, BatchSize)
- for _, item := range c.sprintIssue {
- cache = append(cache, item)
- if len(cache) == BatchSize {
- err = c.db.Clauses(clause.OnConflict{UpdateAll:
true}).Create(cache).Error
- if err != nil {
- return err
- }
- cache = make([]*ticket.SprintIssue, 0, BatchSize)
- }
- }
- if len(cache) != 0 {
- err = c.db.Clauses(clause.OnConflict{UpdateAll:
true}).Create(cache).Error
- if err == nil {
- return err
- }
- }
- return nil
-}
-func (c *SprintIssuesConverter) SaveAssigneeHistory() error {
- var err error
- cache := make([]*ticket.IssueAssigneeHistory, 0, BatchSize)
- for _, item := range c.assigneeDefault {
- cache = append(cache, item)
- if len(cache) == BatchSize {
- err = c.db.Clauses(clause.OnConflict{UpdateAll:
true}).Create(cache).Error
- if err != nil {
- return err
- }
- cache = make([]*ticket.IssueAssigneeHistory, 0,
BatchSize)
- }
- }
- if len(cache) != 0 {
- err = c.db.Clauses(clause.OnConflict{UpdateAll:
true}).Create(cache).Error
- if err == nil {
- return err
- }
- }
- return nil
-}
-
-func (c *SprintIssuesConverter) parseFromTo(from, to string)
(map[uint64]struct{}, map[uint64]struct{}, error) {
- fromInts := make(map[uint64]struct{})
- toInts := make(map[uint64]struct{})
- var n uint64
- var err error
- for _, item := range strings.Split(from, ",") {
- s := strings.TrimSpace(item)
- if s == "" {
- continue
- }
- n, err = strconv.ParseUint(s, 10, 64)
- if err != nil {
- return nil, nil, err
- }
- fromInts[n] = struct{}{}
- }
- for _, item := range strings.Split(to, ",") {
- s := strings.TrimSpace(item)
- if s == "" {
- continue
- }
- n, err = strconv.ParseUint(s, 10, 64)
- if err != nil {
- return nil, nil, err
- }
- toInts[n] = struct{}{}
- }
- inter := make(map[uint64]struct{})
- for k := range fromInts {
- if _, ok := toInts[k]; ok {
- inter[k] = struct{}{}
- delete(toInts, k)
- }
- }
- for k := range inter {
- delete(fromInts, k)
- }
- return fromInts, toInts, nil
-}
-
-func (c *SprintIssuesConverter) handleFrom(connectionId, sprintId uint64, cl
ChangelogItemResult) error {
- if sprint, _ := c.getJiraSprint(connectionId, sprintId); sprint == nil {
- return nil
- }
- key := fmt.Sprintf("%d:%d:%d", connectionId, sprintId, cl.IssueId)
- if item, ok := c.sprintIssue[key]; ok {
- if item != nil && (item.RemovedDate == nil || item.RemovedDate
!= nil && item.RemovedDate.Before(cl.Created)) {
- item.RemovedDate = &cl.Created
- item.IsRemoved = true
- }
- } else {
- addedStage, _ := c.getStage(cl.Created, connectionId, sprintId)
- jiraIssue, _ := c.getJiraIssue(connectionId, cl.IssueId)
- sprint, _ := c.getJiraSprint(connectionId, sprintId)
- if sprint == nil {
- return nil
- }
- sprintIssue := &ticket.SprintIssue{
- SprintId: c.sprintIdGen.Generate(connectionId,
sprintId),
- IssueId: c.issueIdGen.Generate(connectionId,
cl.IssueId),
- AddedDate: sprint.StartDate,
- AddedStage: addedStage,
- RemovedDate: &cl.Created,
- IsRemoved: true,
- }
- if jiraIssue != nil {
- sprintIssue.AddedDate = &jiraIssue.Created
- sprintIssue.AddedStage = getStage(jiraIssue.Created,
sprint.StartDate, sprint.CompleteDate)
- }
- c.sprintIssue[key] = sprintIssue
- }
- k := fmt.Sprintf("%d:%d", sprintId, cl.IssueId)
- if item := c.sprintsHistory[k]; item != nil {
- item.EndDate = &cl.Created
- err := c.db.Clauses(clause.OnConflict{
- UpdateAll: true,
- }).Create(item).Error
- if err != nil {
- return err
- }
- }
- return nil
-}
-
-func (c *SprintIssuesConverter) handleTo(connectionId, sprintId uint64, cl
ChangelogItemResult) error {
- domainSprintId := c.sprintIdGen.Generate(connectionId, sprintId)
- key := fmt.Sprintf("%d:%d:%d", connectionId, sprintId, cl.IssueId)
- addedStage, err := c.getStage(cl.Created, connectionId, sprintId)
- if err == gorm.ErrRecordNotFound {
- return nil
- }
- if err != nil {
- return err
- }
- if addedStage == nil {
- return nil
- }
- if item, ok := c.sprintIssue[key]; ok {
- if item != nil {
- item.IsRemoved = false
- if item.AddedDate == nil ||
item.AddedDate.After(cl.Created) {
- item.AddedDate = &cl.Created
- item.AddedStage = addedStage
- }
- }
- } else {
- c.sprintIssue[key] = &ticket.SprintIssue{
- SprintId: domainSprintId,
- IssueId: c.issueIdGen.Generate(connectionId,
cl.IssueId),
- AddedDate: &cl.Created,
- AddedStage: addedStage,
- RemovedDate: nil,
- }
- }
- k := fmt.Sprintf("%d:%d", sprintId, cl.IssueId)
- now := time.Now()
- c.sprintsHistory[k] = &ticket.IssueSprintsHistory{
- IssueId: c.issueIdGen.Generate(connectionId, cl.IssueId),
- SprintId: domainSprintId,
- StartDate: cl.Created,
- EndDate: &now,
- }
- return nil
-}
-
-func (c *SprintIssuesConverter) setupSprintIssue(connectionId, boardId uint64)
error {
- cursor, err := c.db.Model(&models.JiraSprintIssue{}).
- Select("_tool_jira_sprint_issues.*").
- Joins("left join _tool_jira_board_sprints on
_tool_jira_board_sprints.sprint_id = _tool_jira_sprint_issues.sprint_id").
- Where("_tool_jira_board_sprints.connection_id = ? AND
_tool_jira_board_sprints.board_id = ?", connectionId, boardId).
+ jiraSprintIssue := &models.JiraSprintIssue{}
+ // select all issues belongs to the board
+ cursor, err := db.Model(jiraSprintIssue).
+ Where("_tool_jira_sprint_issues.connection_id = ? ",
data.Options.ConnectionId).
Rows()
if err != nil {
return err
}
defer cursor.Close()
- for cursor.Next() {
- var jiraSprintIssue models.JiraSprintIssue
- err = c.db.ScanRows(cursor, &jiraSprintIssue)
- if err != nil {
- return err
- }
- sprint, _ := c.getJiraSprint(connectionId,
jiraSprintIssue.SprintId)
- if sprint == nil {
- continue
- }
- key := fmt.Sprintf("%d:%d:%d", connectionId,
jiraSprintIssue.SprintId, jiraSprintIssue.IssueId)
- dsi := ticket.SprintIssue{
- SprintId: c.sprintIdGen.Generate(connectionId,
jiraSprintIssue.SprintId),
- IssueId: c.issueIdGen.Generate(connectionId,
jiraSprintIssue.IssueId),
- AddedDate: jiraSprintIssue.IssueCreatedDate,
- }
- if dsi.AddedDate != nil {
- dsi.AddedStage = getStage(*dsi.AddedDate,
sprint.StartDate, sprint.CompleteDate)
- }
- if jiraSprintIssue.ResolutionDate != nil {
- dsi.ResolvedStage =
getStage(*jiraSprintIssue.ResolutionDate, sprint.StartDate, sprint.CompleteDate)
- }
- c.sprintIssue[key] = &dsi
- issueId := c.issueIdGen.Generate(connectionId,
jiraSprintIssue.IssueId)
- issue, _ := c.getJiraIssue(connectionId,
jiraSprintIssue.IssueId)
- now := time.Now()
- if issue != nil {
- issueAssigneeHistory := &ticket.IssueAssigneeHistory{
- IssueId: issueId,
- StartDate: issue.Created,
- EndDate: &now,
- }
- if issue.AssigneeAccountId != "" {
- issueAssigneeHistory.Assignee =
c.userIdGen.Generate(connectionId, issue.AssigneeAccountId)
- }
- c.assigneeDefault[issueId] = issueAssigneeHistory
- }
- }
- return nil
-}
-func (c *SprintIssuesConverter) getJiraSprint(connectionId, sprintId uint64)
(*models.JiraSprint, error) {
- key := fmt.Sprintf("%d:%d", connectionId, sprintId)
- if value, ok := c.sprints[key]; ok {
- return value, nil
- }
- var sprint models.JiraSprint
- err := c.db.First(&sprint, "connection_id = ? AND sprint_id = ?",
connectionId, sprintId).Error
- if err != nil {
- return nil, err
- }
- c.sprints[key] = &sprint
- return &sprint, nil
-}
-
-func (c *SprintIssuesConverter) getJiraIssue(connectionId, issueId uint64)
(*models.JiraIssue, error) {
- key := fmt.Sprintf("%d:%d", connectionId, issueId)
- if issue, ok := c.jiraIssue[key]; ok {
- return issue, nil
- }
- var jiraIssue models.JiraIssue
- err := c.db.First(&jiraIssue, "connection_id = ? AND issue_id = ?",
connectionId, issueId).Error
- if err != nil {
- return nil, err
- }
- c.jiraIssue[key] = &jiraIssue
- return &jiraIssue, nil
-}
-func (c *SprintIssuesConverter) getStage(t time.Time, connectionId, sprintId
uint64) (*string, error) {
- sprint, err := c.getJiraSprint(connectionId, sprintId)
- if err != nil {
- return nil, err
- }
- return getStage(t, sprint.StartDate, sprint.CompleteDate), nil
-}
-
-func (c *SprintIssuesConverter) handleStatus(connectionId uint64, cl
ChangelogItemResult) error {
- var err error
- issueId := c.issueIdGen.Generate(connectionId, cl.IssueId)
- if statusHistory := c.status[issueId]; statusHistory != nil {
- statusHistory.EndDate = &cl.Created
- err = c.db.Clauses(clause.OnConflict{
- UpdateAll: true,
- }).Create(c.status[issueId]).Error
- if err != nil {
- return err
- }
- }
- now := time.Now()
- c.status[issueId] = &ticket.IssueStatusHistory{
- IssueId: issueId,
- OriginalStatus: cl.ToString,
- StartDate: cl.Created,
- EndDate: &now,
- }
- err = c.db.Clauses(clause.OnConflict{
- UpdateAll: true,
- }).Create(c.status[issueId]).Error
- if err != nil {
- return err
- }
- return nil
-}
-
-func (c *SprintIssuesConverter) handleAssignee(connectionId uint64, cl
ChangelogItemResult) error {
- var err error
- issueId := c.issueIdGen.Generate(connectionId, cl.IssueId)
- if assigneeHistory := c.assignee[issueId]; assigneeHistory != nil {
- assigneeHistory.EndDate = &cl.Created
- err = c.db.Clauses(clause.OnConflict{
- UpdateAll: true,
- }).Create(assigneeHistory).Error
- if err != nil {
- return err
- }
- }
- var assignee string
- if cl.ToValue != "" {
- assignee = c.userIdGen.Generate(connectionId, cl.ToValue)
- }
- now := time.Now()
- c.assignee[issueId] = &ticket.IssueAssigneeHistory{
- IssueId: issueId,
- Assignee: assignee,
- StartDate: cl.Created,
- EndDate: &now,
- }
- err = c.db.Clauses(clause.OnConflict{
- UpdateAll: true,
- }).Create(c.assignee[issueId]).Error
+ issueIdGen := didgen.NewDomainIdGenerator(&models.JiraIssue{})
+ sprintIdGen := didgen.NewDomainIdGenerator(&models.JiraSprint{})
+
+ converter, err := helper.NewDataConverter(helper.DataConverterArgs{
+ InputRowType: reflect.TypeOf(models.JiraSprintIssue{}),
+ Input: cursor,
+ RawDataSubTaskArgs: helper.RawDataSubTaskArgs{
+ Ctx: taskCtx,
+ Params: JiraApiParams{
+ ConnectionId: data.Connection.ID,
+ BoardId: data.Options.BoardId,
+ },
+ Table: RAW_ISSUE_TABLE,
+ },
+ Convert: func(inputRow interface{}) ([]interface{}, error) {
+ jiraSprintIssue := inputRow.(*models.JiraSprintIssue)
+ sprintIssue := &ticket.SprintIssue{
+ SprintId:
sprintIdGen.Generate(data.Options.ConnectionId, jiraSprintIssue.SprintId),
+ IssueId:
issueIdGen.Generate(data.Options.ConnectionId, jiraSprintIssue.IssueId),
+ }
+ return []interface{}{sprintIssue}, nil
+ },
+ })
if err != nil {
return err
}
- delete(c.assigneeDefault, issueId)
- return nil
-}
-func getStage(t time.Time, sprintStart, sprintComplete *time.Time) *string {
- if sprintStart == nil {
- return &ticket.BeforeSprint
- }
- if sprintStart.After(t) {
- return &ticket.BeforeSprint
- }
- if sprintComplete == nil {
- return &ticket.DuringSprint
- }
- if sprintComplete.Before(t) {
- return &ticket.AfterSprint
- }
- return &ticket.DuringSprint
+ return converter.Execute()
}
diff --git a/plugins/tapd/tasks/issue_assign_history_converter.go
b/plugins/tapd/tasks/issue_assign_history_converter.go
deleted file mode 100644
index d64b1eaf..00000000
--- a/plugins/tapd/tasks/issue_assign_history_converter.go
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-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 tasks
-
-//import (
-// "github.com/apache/incubator-devlake/models/domainlayer/ticket"
-// "github.com/apache/incubator-devlake/plugins/core"
-// "github.com/apache/incubator-devlake/plugins/helper"
-// "github.com/apache/incubator-devlake/plugins/tapd/models"
-// "reflect"
-//)
-//
-//func ConvertIssueAssigneeHistory(taskCtx core.SubTaskContext) error {
-// data := taskCtx.GetData().(*TapdTaskData)
-// logger := taskCtx.GetLogger()
-// db := taskCtx.GetDb()
-// logger.Info("convert board:%d", data.Options.WorkspaceID)
-//
-// cursor, err :=
db.Model(&models.TapdIssueAssigneeHistory{}).Where("connection_id = ? AND
workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID).Rows()
-// if err != nil {
-// return err
-// }
-// defer cursor.Close()
-// converter, err := helper.NewDataConverter(helper.DataConverterArgs{
-// RawDataSubTaskArgs: helper.RawDataSubTaskArgs{
-// Ctx: taskCtx,
-// Params: TapdApiParams{
-// ConnectionId: data.Connection.ID,
-//
-// WorkspaceID: data.Options.WorkspaceID,
-// },
-// Table: "tapd_api_%",
-// },
-// InputRowType: reflect.TypeOf(models.TapdIssueAssigneeHistory{}),
-// Input: cursor,
-// Convert: func(inputRow interface{}) ([]interface{}, error) {
-// toolL := inputRow.(*models.TapdIssueAssigneeHistory)
-// domainL := &ticket.IssueAssigneeHistory{
-// IssueId:
IssueIdGen.Generate(data.Connection.ID, toolL.IssueId),
-// Assignee: toolL.Assignee,
-// StartDate: toolL.StartDate,
-// EndDate: &toolL.EndDate,
-// }
-// return []interface{}{
-// domainL,
-// }, nil
-// },
-// })
-// if err != nil {
-// return err
-// }
-//
-// return converter.Execute()
-//}
-//
-//var ConvertIssueAssigneeHistoryMeta = core.SubTaskMeta{
-// Name: "convertIssueAssigneeHistory",
-// EntryPoint: ConvertIssueAssigneeHistory,
-// EnabledByDefault: true,
-// Description: "convert Tapd IssueAssigneeHistory",
-//}
diff --git a/plugins/tapd/tasks/issue_sprint_history_converter.go
b/plugins/tapd/tasks/issue_sprint_history_converter.go
deleted file mode 100644
index c39e4531..00000000
--- a/plugins/tapd/tasks/issue_sprint_history_converter.go
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-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 tasks
-
-//import (
-// "github.com/apache/incubator-devlake/models/domainlayer/didgen"
-// "github.com/apache/incubator-devlake/models/domainlayer/ticket"
-// "github.com/apache/incubator-devlake/plugins/core"
-// "github.com/apache/incubator-devlake/plugins/helper"
-// "github.com/apache/incubator-devlake/plugins/tapd/models"
-// "reflect"
-//)
-//
-//func ConvertIssueSprintsHistory(taskCtx core.SubTaskContext) error {
-// data := taskCtx.GetData().(*TapdTaskData)
-// logger := taskCtx.GetLogger()
-// db := taskCtx.GetDb()
-// logger.Info("convert board:%d", data.Options.WorkspaceID)
-// iterIdGen := didgen.NewDomainIdGenerator(&models.TapdIteration{})
-// cursor, err :=
db.Model(&models.TapdIssueSprintHistory{}).Where("connection_id = ? AND
workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID).Rows()
-// if err != nil {
-// return err
-// }
-// defer cursor.Close()
-// converter, err := helper.NewDataConverter(helper.DataConverterArgs{
-// RawDataSubTaskArgs: helper.RawDataSubTaskArgs{
-// Ctx: taskCtx,
-// Params: TapdApiParams{
-// ConnectionId: data.Connection.ID,
-//
-// WorkspaceID: data.Options.WorkspaceID,
-// },
-// Table: "tapd_api_%",
-// },
-// InputRowType: reflect.TypeOf(models.TapdIssueSprintHistory{}),
-// Input: cursor,
-// Convert: func(inputRow interface{}) ([]interface{}, error) {
-// toolL := inputRow.(*models.TapdIssueSprintHistory)
-// domainL := &ticket.IssueSprintsHistory{
-// IssueId:
IssueIdGen.Generate(data.Connection.ID, toolL.IssueId),
-// SprintId:
iterIdGen.Generate(data.Connection.ID, toolL.SprintId),
-// StartDate: toolL.StartDate,
-// EndDate: &toolL.EndDate,
-// }
-// return []interface{}{
-// domainL,
-// }, nil
-// },
-// })
-// if err != nil {
-// return err
-// }
-//
-// return converter.Execute()
-//}
-//
-//var ConvertIssueSprintsHistoryMeta = core.SubTaskMeta{
-// Name: "convertIssueSprintsHistory",
-// EntryPoint: ConvertIssueSprintsHistory,
-// EnabledByDefault: true,
-// Description: "convert Tapd IssueSprintsHistory",
-//}
diff --git a/plugins/tapd/tasks/issue_status_history_converter.go
b/plugins/tapd/tasks/issue_status_history_converter.go
deleted file mode 100644
index 263d2c11..00000000
--- a/plugins/tapd/tasks/issue_status_history_converter.go
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-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 tasks
-
-//import (
-// "github.com/apache/incubator-devlake/models/domainlayer/ticket"
-// "github.com/apache/incubator-devlake/plugins/core"
-// "github.com/apache/incubator-devlake/plugins/helper"
-// "github.com/apache/incubator-devlake/plugins/tapd/models"
-// "reflect"
-//)
-//
-//func ConvertIssueStatusHistory(taskCtx core.SubTaskContext) error {
-// data := taskCtx.GetData().(*TapdTaskData)
-// logger := taskCtx.GetLogger()
-// db := taskCtx.GetDb()
-// logger.Info("convert board:%d", data.Options.WorkspaceID)
-// cursor, err :=
db.Model(&models.TapdIssueStatusHistory{}).Where("connection_id = ? AND
workspace_id = ?", data.Connection.ID, data.Options.WorkspaceID).Rows()
-// if err != nil {
-// return err
-// }
-// defer cursor.Close()
-// converter, err := helper.NewDataConverter(helper.DataConverterArgs{
-// RawDataSubTaskArgs: helper.RawDataSubTaskArgs{
-// Ctx: taskCtx,
-// Params: TapdApiParams{
-// ConnectionId: data.Connection.ID,
-//
-// WorkspaceID: data.Options.WorkspaceID,
-// },
-// Table: "tapd_api_%",
-// },
-// InputRowType: reflect.TypeOf(models.TapdIssueStatusHistory{}),
-// Input: cursor,
-// Convert: func(inputRow interface{}) ([]interface{}, error) {
-// toolL := inputRow.(*models.TapdIssueStatusHistory)
-// domainL := &ticket.IssueStatusHistory{
-// IssueId:
IssueIdGen.Generate(data.Connection.ID, toolL.IssueId),
-// OriginalStatus: toolL.OriginalStatus,
-// StartDate: toolL.StartDate,
-// EndDate: &toolL.EndDate,
-// }
-// return []interface{}{
-// domainL,
-// }, nil
-// },
-// })
-// if err != nil {
-// return err
-// }
-//
-// return converter.Execute()
-//}
-//
-//var ConvertIssueStatusHistoryMeta = core.SubTaskMeta{
-// Name: "convertIssueStatusHistory",
-// EntryPoint: ConvertIssueStatusHistory,
-// EnabledByDefault: true,
-// Description: "convert Tapd IssueStatusHistory",
-//}