You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by wa...@apache.org on 2022/06/06 05:12:26 UTC
[incubator-devlake] branch main updated: fix(gitlab): fix issue assignee id type
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 0a69bd74 fix(gitlab): fix issue assignee id type
0a69bd74 is described below
commit 0a69bd749d8f85db2c4a96658ac23436087fd202
Author: Yingchu Chen <yi...@merico.dev>
AuthorDate: Mon Jun 6 12:19:00 2022 +0800
fix(gitlab): fix issue assignee id type
closes #2085
---
plugins/gitlab/gitlab.go | 32 ++-----
plugins/gitlab/impl/impl.go | 2 +-
plugins/gitlab/models/issue.go | 8 +-
plugins/gitlab/tasks/issue_convertor.go | 33 ++++---
plugins/gitlab/tasks/issue_extractor.go | 149 ++++++++++++++++----------------
5 files changed, 102 insertions(+), 122 deletions(-)
diff --git a/plugins/gitlab/gitlab.go b/plugins/gitlab/gitlab.go
index d6c8a5f2..88ce9f10 100644
--- a/plugins/gitlab/gitlab.go
+++ b/plugins/gitlab/gitlab.go
@@ -18,10 +18,7 @@ limitations under the License.
package main // must be main for plugin entry point
import (
- "github.com/apache/incubator-devlake/config"
- "github.com/apache/incubator-devlake/logger"
"github.com/apache/incubator-devlake/plugins/gitlab/impl"
- "github.com/apache/incubator-devlake/plugins/tapd/models"
"github.com/apache/incubator-devlake/runner"
"github.com/spf13/cobra"
)
@@ -32,28 +29,13 @@ var PluginEntry impl.Gitlab //nolint
// standalone mode for debugging
func main() {
gitlabCmd := &cobra.Command{Use: "gitlab"}
- gitlabCmd.Run = func(c *cobra.Command, args []string) {
- cfg := config.GetConfig()
- log := logger.Global.Nested(gitlabCmd.Use)
- db, err := runner.NewGormDb(cfg, log)
- if err != nil {
- panic(err)
- }
- wsList := make([]*models.TapdWorkspace, 0)
- err = db.Find(&wsList, "parent_id = ?", 59169984).Error
- projectList := []uint64{63281714,
- 34276182,
- 46319043,
- 50328292,
- 63984859,
- 55805854,
- 38496185,
- }
- for _, v := range projectList {
- runner.DirectRun(gitlabCmd, args, PluginEntry, map[string]interface{}{
- "projectId": v,
- })
- }
+ projectId := gitlabCmd.Flags().IntP("project-id", "p", 0, "gitlab project id")
+
+ _ = gitlabCmd.MarkFlagRequired("project-id")
+ gitlabCmd.Run = func(cmd *cobra.Command, args []string) {
+ runner.DirectRun(cmd, args, PluginEntry, map[string]interface{}{
+ "projectId": *projectId,
+ })
}
runner.RunCmd(gitlabCmd)
diff --git a/plugins/gitlab/impl/impl.go b/plugins/gitlab/impl/impl.go
index 7caeff84..9a21548a 100644
--- a/plugins/gitlab/impl/impl.go
+++ b/plugins/gitlab/impl/impl.go
@@ -116,7 +116,7 @@ func (plugin Gitlab) ApiResources() map[string]map[string]core.ApiResourceHandle
"GET": api.ListConnections,
},
"connections/:connectionId": {
- "GET": api.GetConnection,
+ "GET": api.GetConnection,
"PATCH": api.PatchConnection,
},
}
diff --git a/plugins/gitlab/models/issue.go b/plugins/gitlab/models/issue.go
index 36628433..3fed54e8 100644
--- a/plugins/gitlab/models/issue.go
+++ b/plugins/gitlab/models/issue.go
@@ -15,7 +15,7 @@ type GitlabIssue struct {
Priority string `gorm:"type:varchar(255)"`
Type string `gorm:"type:varchar(100)"`
Status string `gorm:"type:varchar(255)"`
- AssigneeId string
+ AssigneeId int
AssigneeName string `gorm:"type:varchar(255)"`
LeadTimeMinutes uint
Url string `gorm:"type:varchar(255)"`
@@ -24,11 +24,11 @@ type GitlabIssue struct {
GitlabUpdatedAt time.Time `gorm:"index"`
Severity string `gorm:"type:varchar(255)"`
Component string `gorm:"type:varchar(255)"`
- TimeEstimate int64
- TotalTimeSpent int64
+ TimeEstimate int64
+ TotalTimeSpent int64
common.NoPKModel
}
+
func (GitlabIssue) TableName() string {
return "_tool_gitlab_issues"
}
-
diff --git a/plugins/gitlab/tasks/issue_convertor.go b/plugins/gitlab/tasks/issue_convertor.go
index e8ee6060..3133dea9 100644
--- a/plugins/gitlab/tasks/issue_convertor.go
+++ b/plugins/gitlab/tasks/issue_convertor.go
@@ -49,24 +49,23 @@ func ConvertIssues(taskCtx core.SubTaskContext) error {
Convert: func(inputRow interface{}) ([]interface{}, error) {
issue := inputRow.(*gitlabModels.GitlabIssue)
domainIssue := &ticket.Issue{
- DomainEntity: domainlayer.DomainEntity{Id: issueIdGen.Generate(issue.GitlabId)},
- Number: strconv.Itoa(issue.Number),
- Title: issue.Title,
- Description: issue.Body,
- Priority: issue.Priority,
- Type: issue.Type,
- AssigneeId: issue.AssigneeId,
- AssigneeName: issue.AssigneeName,
- LeadTimeMinutes: issue.LeadTimeMinutes,
- Url: issue.Url,
- CreatedDate: &issue.GitlabCreatedAt,
- UpdatedDate: &issue.GitlabUpdatedAt,
- ResolutionDate: issue.ClosedAt,
- Severity: issue.Severity,
- Component: issue.Component,
- OriginalStatus: issue.Status,
+ DomainEntity: domainlayer.DomainEntity{Id: issueIdGen.Generate(issue.GitlabId)},
+ Number: strconv.Itoa(issue.Number),
+ Title: issue.Title,
+ Description: issue.Body,
+ Priority: issue.Priority,
+ Type: issue.Type,
+ AssigneeName: issue.AssigneeName,
+ LeadTimeMinutes: issue.LeadTimeMinutes,
+ Url: issue.Url,
+ CreatedDate: &issue.GitlabCreatedAt,
+ UpdatedDate: &issue.GitlabUpdatedAt,
+ ResolutionDate: issue.ClosedAt,
+ Severity: issue.Severity,
+ Component: issue.Component,
+ OriginalStatus: issue.Status,
OriginalEstimateMinutes: issue.TimeEstimate,
- TimeSpentMinutes: issue.TotalTimeSpent,
+ TimeSpentMinutes: issue.TotalTimeSpent,
}
if issue.State == "opened" {
domainIssue.Status = ticket.TODO
diff --git a/plugins/gitlab/tasks/issue_extractor.go b/plugins/gitlab/tasks/issue_extractor.go
index 7e18120f..d4870483 100644
--- a/plugins/gitlab/tasks/issue_extractor.go
+++ b/plugins/gitlab/tasks/issue_extractor.go
@@ -16,94 +16,93 @@ var ExtractApiIssuesMeta = core.SubTaskMeta{
}
type IssuesResponse struct {
- ProjectId int `json:"project_id"`
- Milestone struct {
- Due_date string
- Project_id int
- State string
+ ProjectId int `json:"project_id"`
+ Milestone struct {
+ Due_date string
+ Project_id int
+ State string
Description string
- Iid int
- Id int
- Title string
- CreatedAt helper.Iso8601Time
- UpdatedAt helper.Iso8601Time
+ Iid int
+ Id int
+ Title string
+ CreatedAt helper.Iso8601Time
+ UpdatedAt helper.Iso8601Time
}
- Author struct{
- State string
- WebUrl string
- AvatarUrl string
- Username string
- Id int
- Name string
+ Author struct {
+ State string
+ WebUrl string
+ AvatarUrl string
+ Username string
+ Id int
+ Name string
}
- Description string
- State string
- Iid int
- Assignees []struct {
- AvatarUrl string
- WebUrl string
- State string
- Username string
- Id string
- Name string
+ Description string
+ State string
+ Iid int
+ Assignees []struct {
+ AvatarUrl string
+ WebUrl string
+ State string
+ Username string
+ Id int
+ Name string
}
Assignee *struct {
- AvatarUrl string
- WebUrl string
- State string
- Username string
- Id string
- Name string
+ AvatarUrl string
+ WebUrl string
+ State string
+ Username string
+ Id int
+ Name string
}
- Type string
- Labels []string `json:"labels"`
- UpVotes int
- DownVotes int
- MergeRequestsCount int
- Id int `json:"id"`
- Title string
- GitlabUpdatedAt helper.Iso8601Time `json:"updated_at"`
- GitlabCreatedAt helper.Iso8601Time `json:"created_at"`
- GitlabClosedAt *helper.Iso8601Time `json:"closed_at"`
- ClosedBy struct{
- State string
- WebUrl string
- AvatarUrl string
- Username string
- Id int
- Name string
+ Type string
+ Labels []string `json:"labels"`
+ UpVotes int
+ DownVotes int
+ MergeRequestsCount int
+ Id int `json:"id"`
+ Title string
+ GitlabUpdatedAt helper.Iso8601Time `json:"updated_at"`
+ GitlabCreatedAt helper.Iso8601Time `json:"created_at"`
+ GitlabClosedAt *helper.Iso8601Time `json:"closed_at"`
+ ClosedBy struct {
+ State string
+ WebUrl string
+ AvatarUrl string
+ Username string
+ Id int
+ Name string
}
UserNotesCount int
- DueDate helper.Iso8601Time
- WebUrl string `json:"web_url"`
- References struct {
- Short string
- Relative string
- Full string
+ DueDate helper.Iso8601Time
+ WebUrl string `json:"web_url"`
+ References struct {
+ Short string
+ Relative string
+ Full string
}
TimeStats struct {
- TimeEstimate int64
- TotalTimeSpent int64
- HumanTimeEstimate string
+ TimeEstimate int64
+ TotalTimeSpent int64
+ HumanTimeEstimate string
HumanTotalTimeSpent string
}
- HasTasks bool
- TaskStatus string
- Confidential bool
+ HasTasks bool
+ TaskStatus string
+ Confidential bool
DiscussionLocked bool
- IssueType string
- Serverity string
- Links struct {
- Self string `json:"url"`
- Notes string
- AwardEmoji string
- Project string
+ IssueType string
+ Serverity string
+ Links struct {
+ Self string `json:"url"`
+ Notes string
+ AwardEmoji string
+ Project string
}
TaskCompletionStatus struct {
- Count int
- CompletedCount int
+ Count int
+ CompletedCount int
}
-
}
func ExtractApiIssues(taskCtx core.SubTaskContext) error {
@@ -135,7 +134,7 @@ func ExtractApiIssues(taskCtx core.SubTaskContext) error {
return nil, nil
}
//If this is not Issue, ignore
- if body.IssueType != "ISSUE" && body.Type != "ISSUE"{
+ if body.IssueType != "ISSUE" && body.Type != "ISSUE" {
return nil, nil
}
results := make([]interface{}, 0, 2)
@@ -175,8 +174,8 @@ func convertGitlabIssue(issue *IssuesResponse, projectId int) (*models.GitlabIss
ClosedAt: helper.Iso8601TimeToTime(issue.GitlabClosedAt),
GitlabCreatedAt: issue.GitlabCreatedAt.ToTime(),
GitlabUpdatedAt: issue.GitlabUpdatedAt.ToTime(),
- TimeEstimate: issue.TimeStats.TimeEstimate,
- TotalTimeSpent: issue.TimeStats.TotalTimeSpent,
+ TimeEstimate: issue.TimeStats.TimeEstimate,
+ TotalTimeSpent: issue.TimeStats.TotalTimeSpent,
}
if issue.Assignee != nil {