This is an automated email from the ASF dual-hosted git repository.

abeizn 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 d87011675 feat: add full name to remote api (#5724)
d87011675 is described below

commit d87011675379fbc6e165fb9b8b56d7a30585e654
Author: Klesh Wong <[email protected]>
AuthorDate: Tue Jul 25 17:38:20 2023 +0800

    feat: add full name to remote api (#5724)
    
    * feat: add full name to remote api
    
    * fix: unit test
---
 backend/Makefile                                      |  7 ++++---
 backend/core/plugin/plugin_scope_abstract.go          |  1 +
 backend/helpers/pluginhelper/api/remote_api_helper.go | 11 +++++++----
 backend/helpers/pluginhelper/api/scope_helper_test.go |  8 ++++++++
 backend/plugins/bamboo/models/project.go              |  4 ++++
 backend/plugins/bitbucket/models/repo.go              |  4 ++++
 backend/plugins/gitee/models/repo.go                  |  5 +++++
 backend/plugins/github/models/repo.go                 |  4 ++++
 backend/plugins/gitlab/models/project.go              |  4 ++++
 backend/plugins/jenkins/models/job.go                 |  3 +++
 backend/plugins/jira/models/board.go                  |  4 ++++
 backend/plugins/pagerduty/models/service.go           |  4 ++++
 backend/plugins/sonarqube/models/sonarqube_project.go |  4 ++++
 backend/plugins/tapd/models/workspace.go              |  4 ++++
 backend/plugins/trello/models/board.go                |  4 ++++
 backend/plugins/zentao/models/project.go              |  4 ++++
 backend/server/services/remote/models/models.go       |  4 ++++
 17 files changed, 72 insertions(+), 7 deletions(-)

diff --git a/backend/Makefile b/backend/Makefile
index 977eea918..85f7ae35b 100644
--- a/backend/Makefile
+++ b/backend/Makefile
@@ -109,11 +109,12 @@ unit-test: mock unit-test-only python-unit-test
 
 unit-test-only:
        set -e;\
-       exit_code=0;\
        for m in $$(go list ./... | egrep -v 'test|models|e2e'); do \
-               echo $$m; go test -timeout 60s -v $$m || exit_code=$$?; \
+               echo $$m; \
+                       if ! go test -timeout 60s -v $$m; then \
+                               exit $$?; \
+                       fi \
        done; \
-       exit $$exit_code
 
 build-pydevlake:
        poetry install -C python/pydevlake
diff --git a/backend/core/plugin/plugin_scope_abstract.go 
b/backend/core/plugin/plugin_scope_abstract.go
index 9aa7314e0..fe48ae031 100644
--- a/backend/core/plugin/plugin_scope_abstract.go
+++ b/backend/core/plugin/plugin_scope_abstract.go
@@ -36,6 +36,7 @@ type Scope interface {
 
 type ToolLayerScope interface {
        Scope
+       ScopeFullName() string
        ScopeParams() interface{}
 }
 
diff --git a/backend/helpers/pluginhelper/api/remote_api_helper.go 
b/backend/helpers/pluginhelper/api/remote_api_helper.go
index a85dd8ff8..f0dab9bf4 100644
--- a/backend/helpers/pluginhelper/api/remote_api_helper.go
+++ b/backend/helpers/pluginhelper/api/remote_api_helper.go
@@ -35,6 +35,7 @@ type RemoteScopesChild struct {
        ParentId *string     `json:"parentId"`
        Id       string      `json:"id"`
        Name     string      `json:"name"`
+       FullName string      `json:"fullName"`
        Data     interface{} `json:"data"`
 }
 
@@ -211,10 +212,11 @@ func (r *RemoteApiHelper[Conn, Scope, ApiScope, Group]) 
GetScopesFromRemote(inpu
                for _, project := range resBody {
                        scope := project.ConvertApiScope()
                        child := RemoteScopesChild{
-                               Type: TypeProject,
-                               Id:   scope.ScopeId(),
-                               Name: scope.ScopeName(),
-                               Data: &scope,
+                               Type:     TypeProject,
+                               Id:       scope.ScopeId(),
+                               Name:     scope.ScopeName(),
+                               FullName: scope.ScopeFullName(),
+                               Data:     &scope,
                        }
                        child.ParentId = &gid
                        if *child.ParentId == "" {
@@ -307,6 +309,7 @@ func (r *RemoteApiHelper[Conn, Scope, ApiScope, Group]) 
SearchRemoteScopes(input
                        Id:       scope.ScopeId(),
                        ParentId: nil,
                        Name:     scope.ScopeName(),
+                       FullName: scope.ScopeFullName(),
                        Data:     scope,
                }
 
diff --git a/backend/helpers/pluginhelper/api/scope_helper_test.go 
b/backend/helpers/pluginhelper/api/scope_helper_test.go
index 3d385c4cb..178103e79 100644
--- a/backend/helpers/pluginhelper/api/scope_helper_test.go
+++ b/backend/helpers/pluginhelper/api/scope_helper_test.go
@@ -56,6 +56,10 @@ func (t TestFakeGitlabRepo) ScopeName() string {
        return ""
 }
 
+func (t TestFakeGitlabRepo) ScopeFullName() string {
+       return ""
+}
+
 func (t TestFakeGitlabRepo) TableName() string {
        return ""
 }
@@ -89,6 +93,10 @@ func (r TestFakeGithubRepo) ScopeName() string {
        return r.Name
 }
 
+func (r TestFakeGithubRepo) ScopeFullName() string {
+       return r.Name
+}
+
 func (r TestFakeGithubRepo) ScopeParams() interface{} {
        return nil
 }
diff --git a/backend/plugins/bamboo/models/project.go 
b/backend/plugins/bamboo/models/project.go
index 8453b2559..2e8cca041 100644
--- a/backend/plugins/bamboo/models/project.go
+++ b/backend/plugins/bamboo/models/project.go
@@ -48,6 +48,10 @@ func (p BambooProject) ScopeName() string {
        return p.Name
 }
 
+func (p BambooProject) ScopeFullName() string {
+       return p.Name
+}
+
 func (p BambooProject) ScopeParams() interface{} {
        return &BambooApiParams{
                ConnectionId: p.ConnectionId,
diff --git a/backend/plugins/bitbucket/models/repo.go 
b/backend/plugins/bitbucket/models/repo.go
index f47edf45d..b6f099c02 100644
--- a/backend/plugins/bitbucket/models/repo.go
+++ b/backend/plugins/bitbucket/models/repo.go
@@ -55,6 +55,10 @@ func (p BitbucketRepo) ScopeName() string {
        return p.Name
 }
 
+func (p BitbucketRepo) ScopeFullName() string {
+       return p.BitbucketId
+}
+
 func (p BitbucketRepo) ScopeParams() interface{} {
        return &BitbucketApiParams{
                ConnectionId: p.ConnectionId,
diff --git a/backend/plugins/gitee/models/repo.go 
b/backend/plugins/gitee/models/repo.go
index feaeec4f2..9faf96769 100644
--- a/backend/plugins/gitee/models/repo.go
+++ b/backend/plugins/gitee/models/repo.go
@@ -18,6 +18,7 @@ limitations under the License.
 package models
 
 import (
+       "fmt"
        "strconv"
        "time"
 
@@ -51,6 +52,10 @@ func (r GiteeRepo) ScopeName() string {
        return r.Name
 }
 
+func (r GiteeRepo) ScopeFullName() string {
+       return fmt.Sprintf("%v/%v", r.OwnerLogin, r.Name)
+}
+
 func (r GiteeRepo) ScopeParams() interface{} {
        return &GiteeApiParams{
                ConnectionId: r.ConnectionId,
diff --git a/backend/plugins/github/models/repo.go 
b/backend/plugins/github/models/repo.go
index 5646820c2..f59b44b9e 100644
--- a/backend/plugins/github/models/repo.go
+++ b/backend/plugins/github/models/repo.go
@@ -53,6 +53,10 @@ func (r GithubRepo) ScopeName() string {
        return r.Name
 }
 
+func (r GithubRepo) ScopeFullName() string {
+       return r.FullName
+}
+
 func (r GithubRepo) ScopeParams() interface{} {
        return &GithubApiParams{
                ConnectionId: r.ConnectionId,
diff --git a/backend/plugins/gitlab/models/project.go 
b/backend/plugins/gitlab/models/project.go
index 06a9a6456..dc0846b32 100644
--- a/backend/plugins/gitlab/models/project.go
+++ b/backend/plugins/gitlab/models/project.go
@@ -64,6 +64,10 @@ func (p GitlabProject) ScopeName() string {
        return p.Name
 }
 
+func (p GitlabProject) ScopeFullName() string {
+       return p.PathWithNamespace
+}
+
 func (p GitlabProject) ScopeParams() interface{} {
        return &GitlabApiParams{
                ConnectionId: p.ConnectionId,
diff --git a/backend/plugins/jenkins/models/job.go 
b/backend/plugins/jenkins/models/job.go
index 3b8f608c8..16d66c782 100644
--- a/backend/plugins/jenkins/models/job.go
+++ b/backend/plugins/jenkins/models/job.go
@@ -51,6 +51,9 @@ func (j JenkinsJob) ScopeId() string {
 func (j JenkinsJob) ScopeName() string {
        return j.Name
 }
+func (j JenkinsJob) ScopeFullName() string {
+       return j.FullName
+}
 
 func (j JenkinsJob) ScopeParams() interface{} {
        return &JenkinsApiParams{
diff --git a/backend/plugins/jira/models/board.go 
b/backend/plugins/jira/models/board.go
index 6206995d6..4509693d7 100644
--- a/backend/plugins/jira/models/board.go
+++ b/backend/plugins/jira/models/board.go
@@ -45,6 +45,10 @@ func (b JiraBoard) ScopeName() string {
        return b.Name
 }
 
+func (b JiraBoard) ScopeFullName() string {
+       return b.Name
+}
+
 func (b JiraBoard) ScopeParams() interface{} {
        return &JiraApiParams{
                ConnectionId: b.ConnectionId,
diff --git a/backend/plugins/pagerduty/models/service.go 
b/backend/plugins/pagerduty/models/service.go
index 4b6b7924c..7bda04260 100644
--- a/backend/plugins/pagerduty/models/service.go
+++ b/backend/plugins/pagerduty/models/service.go
@@ -43,6 +43,10 @@ func (s Service) ScopeName() string {
        return s.Name
 }
 
+func (s Service) ScopeFullName() string {
+       return s.Name
+}
+
 func (s Service) ScopeParams() interface{} {
        return &PagerDutyParams{
                ConnectionId: s.ConnectionId,
diff --git a/backend/plugins/sonarqube/models/sonarqube_project.go 
b/backend/plugins/sonarqube/models/sonarqube_project.go
index 693f1be6a..4ddb3d8a1 100644
--- a/backend/plugins/sonarqube/models/sonarqube_project.go
+++ b/backend/plugins/sonarqube/models/sonarqube_project.go
@@ -49,6 +49,10 @@ func (p SonarqubeProject) ScopeName() string {
        return p.Name
 }
 
+func (p SonarqubeProject) ScopeFullName() string {
+       return p.Name
+}
+
 func (p SonarqubeProject) ScopeParams() interface{} {
        return SonarqubeApiParams{
                ConnectionId: p.ConnectionId,
diff --git a/backend/plugins/tapd/models/workspace.go 
b/backend/plugins/tapd/models/workspace.go
index 36e496682..e2fb06388 100644
--- a/backend/plugins/tapd/models/workspace.go
+++ b/backend/plugins/tapd/models/workspace.go
@@ -89,6 +89,10 @@ func (w TapdWorkspace) ScopeName() string {
        return w.Name
 }
 
+func (w TapdWorkspace) ScopeFullName() string {
+       return w.Name
+}
+
 func (w TapdWorkspace) ScopeParams() interface{} {
        return &TapdApiParams{
                ConnectionId: w.ConnectionId,
diff --git a/backend/plugins/trello/models/board.go 
b/backend/plugins/trello/models/board.go
index 33c8ccdaa..d651c91e2 100644
--- a/backend/plugins/trello/models/board.go
+++ b/backend/plugins/trello/models/board.go
@@ -40,6 +40,10 @@ func (b TrelloBoard) ScopeName() string {
        return b.Name
 }
 
+func (b TrelloBoard) ScopeFullName() string {
+       return b.Name
+}
+
 func (b TrelloBoard) ScopeParams() interface{} {
        return &TrelloApiParams{
                ConnectionId: b.ConnectionId,
diff --git a/backend/plugins/zentao/models/project.go 
b/backend/plugins/zentao/models/project.go
index 26402b0cc..f99aea130 100644
--- a/backend/plugins/zentao/models/project.go
+++ b/backend/plugins/zentao/models/project.go
@@ -154,6 +154,10 @@ func (p ZentaoProject) ScopeName() string {
        return p.Name
 }
 
+func (p ZentaoProject) ScopeFullName() string {
+       return p.Name
+}
+
 func (p ZentaoProject) ScopeParams() interface{} {
        return &ZentaoApiParams{
                ConnectionId: p.ConnectionId,
diff --git a/backend/server/services/remote/models/models.go 
b/backend/server/services/remote/models/models.go
index c7ebdb498..17523cf78 100644
--- a/backend/server/services/remote/models/models.go
+++ b/backend/server/services/remote/models/models.go
@@ -97,6 +97,10 @@ func (d DynamicScopeModel) ScopeName() string {
        return 
reflect.ValueOf(d.DynamicTabler.Unwrap()).Elem().FieldByName("Name").String()
 }
 
+func (d DynamicScopeModel) ScopeFullName() string {
+       return d.ScopeName()
+}
+
 func (d DynamicScopeModel) ScopeParams() interface{} {
        return &ApiParams{
                ConnectionId: d.ConnectionId(),

Reply via email to