fix: fix some bugs
diff --git a/models/domainlayer/ticket/issue.go b/models/domainlayer/ticket/issue.go
index 9fcbf99..ec977d0 100644
--- a/models/domainlayer/ticket/issue.go
+++ b/models/domainlayer/ticket/issue.go
@@ -23,6 +23,7 @@
ParentIssueId string
Priority string
OriginalEstimateMinutes int64
+ TimeSpentMinutes int64
TimeRemainingMinutes int64
CreatorId string
AssigneeId string
diff --git a/plugins/jira/tasks/jira_issue_converter.go b/plugins/jira/tasks/jira_issue_converter.go
index bdc606c..6f51222 100644
--- a/plugins/jira/tasks/jira_issue_converter.go
+++ b/plugins/jira/tasks/jira_issue_converter.go
@@ -59,6 +59,7 @@
CreatedDate: &jiraIssue.Created,
UpdatedDate: &jiraIssue.Updated,
LeadTimeMinutes: jiraIssue.LeadTimeMinutes,
+ TimeSpentMinutes: jiraIssue.SpentMinutes,
}
if jiraIssue.AssigneeAccountId != "" {
issue.AssigneeId = userIdGen.Generate(sourceId, jiraIssue.AssigneeAccountId)
diff --git a/plugins/jira/tasks/jira_sprint_issues_converter.go b/plugins/jira/tasks/jira_sprint_issues_converter.go
index f65cabd..5a37a63 100644
--- a/plugins/jira/tasks/jira_sprint_issues_converter.go
+++ b/plugins/jira/tasks/jira_sprint_issues_converter.go
@@ -18,6 +18,7 @@
type SprintIssuesConverter struct {
sprintIdGen *didgen.DomainIdGenerator
issueIdGen *didgen.DomainIdGenerator
+ userIdGen *didgen.DomainIdGenerator
sprints map[string]*models.JiraSprint
sprintIssue map[string]*ticket.SprintIssue
status map[string]*ticket.IssueStatusHistory
@@ -29,6 +30,7 @@
return &SprintIssuesConverter{
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),
@@ -157,6 +159,7 @@
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 {
c.sprintIssue[key] = &ticket.SprintIssue{
@@ -164,6 +167,7 @@
IssueId: c.issueIdGen.Generate(sourceId, cl.IssueId),
AddedDate: nil,
RemovedDate: &cl.Created,
+ IsRemoved: true,
}
}
k := fmt.Sprintf("%d:%d", sprintId, cl.IssueId)
@@ -186,20 +190,23 @@
item.AddedStage, _ = c.getStage(cl.Created, sourceId, sprintId)
}
} else {
+ addedStage, _ := c.getStage(cl.Created, sourceId, sprintId)
c.sprintIssue[key] = &ticket.SprintIssue{
SprintId: domainSprintId,
IssueId: c.issueIdGen.Generate(sourceId, cl.IssueId),
AddedDate: &cl.Created,
+ AddedStage: addedStage,
RemovedDate: nil,
}
c.sprintIssue[key].AddedStage, _ = c.getStage(cl.Created, sourceId, sprintId)
}
k := fmt.Sprintf("%d:%d", sprintId, cl.IssueId)
+ now := time.Now()
c.sprintsHistory[k] = &ticket.IssueSprintsHistory{
IssueId: c.issueIdGen.Generate(sourceId, cl.IssueId),
SprintId: domainSprintId,
StartDate: cl.Created,
- EndDate: nil,
+ EndDate: &now,
}
return nil
}
@@ -243,16 +250,19 @@
issueId := c.issueIdGen.Generate(sourceId, cl.IssueId)
if statusHistory := c.status[issueId]; statusHistory != nil {
statusHistory.EndDate = &cl.Created
- err := lakeModels.Db.Create(statusHistory).Error
- if err != nil {
- return err
- }
}
+ now := time.Now()
c.status[issueId] = &ticket.IssueStatusHistory{
IssueId: issueId,
Status: cl.ToString,
StartDate: cl.Created,
- EndDate: nil,
+ EndDate: &now,
+ }
+ err := lakeModels.Db.Clauses(clause.OnConflict{
+ UpdateAll: true,
+ }).Create(c.status[issueId]).Error
+ if err != nil {
+ return err
}
return nil
}
@@ -261,16 +271,19 @@
issueId := c.issueIdGen.Generate(sourceId, cl.IssueId)
if assigneeHistory := c.assignee[issueId]; assigneeHistory != nil {
assigneeHistory.EndDate = &cl.Created
- err := lakeModels.Db.Create(assigneeHistory).Error
- if err != nil {
- return err
- }
}
+ now := time.Now()
c.assignee[issueId] = &ticket.IssueAssigneeHistory{
IssueId: issueId,
- Assignee: cl.To,
+ Assignee: c.userIdGen.Generate(sourceId, cl.To),
StartDate: cl.Created,
- EndDate: nil,
+ EndDate: &now,
+ }
+ err := lakeModels.Db.Clauses(clause.OnConflict{
+ UpdateAll: true,
+ }).Create(c.assignee[issueId]).Error
+ if err != nil {
+ return err
}
return nil
}
diff --git a/plugins/jira/tasks/jira_worklog_converter.go b/plugins/jira/tasks/jira_worklog_converter.go
index 8280b2b..78ddd9f 100644
--- a/plugins/jira/tasks/jira_worklog_converter.go
+++ b/plugins/jira/tasks/jira_worklog_converter.go
@@ -34,9 +34,11 @@
return err
}
worklog := &ticket.Worklog{
- DomainEntity:domainlayer.DomainEntity{Id: worklogIdGen.Generate(jiraWorklog.SourceId, jiraWorklog.IssueId, jiraWorklog.WorklogId)},
+ DomainEntity: domainlayer.DomainEntity{Id: worklogIdGen.Generate(jiraWorklog.SourceId, jiraWorklog.IssueId, jiraWorklog.WorklogId)},
IssueId: issueIdGen.Generate(jiraWorklog.SourceId, jiraWorklog.IssueId),
TimeSpentMinutes: jiraWorklog.TimeSpentSeconds / 60,
+ StartedDate: &jiraWorklog.Started,
+ LoggedDate: &jiraWorklog.Updated,
}
if jiraWorklog.AuthorId != "" {
worklog.AuthorId = userIdGen.Generate(sourceId, jiraWorklog.AuthorId)