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 {