You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ab...@apache.org on 2023/09/19 08:36:12 UTC

[incubator-devlake] branch main updated: fix: bamboo search-remote-scopes api (#6110)

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 6419a9954 fix: bamboo search-remote-scopes api (#6110)
6419a9954 is described below

commit 6419a99544fd5201a76faf2e1aa57a54a734d9d0
Author: abeizn <zi...@merico.dev>
AuthorDate: Tue Sep 19 16:36:07 2023 +0800

    fix: bamboo search-remote-scopes api (#6110)
    
    * fix: bamboo search-remote-scopes api
    
    * fix: bamboo search-remote-scopes api
---
 backend/plugins/bamboo/api/remote.go  | 16 +++++++++++++---
 backend/plugins/bamboo/models/plan.go | 35 +++++++++++++----------------------
 2 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/backend/plugins/bamboo/api/remote.go b/backend/plugins/bamboo/api/remote.go
index b31dd40ce..c3ab38dd6 100644
--- a/backend/plugins/bamboo/api/remote.go
+++ b/backend/plugins/bamboo/api/remote.go
@@ -20,12 +20,13 @@ package api
 import (
 	gocontext "context"
 	"fmt"
+	"net/url"
+
 	"github.com/apache/incubator-devlake/core/context"
 	"github.com/apache/incubator-devlake/core/errors"
 	"github.com/apache/incubator-devlake/core/plugin"
 	"github.com/apache/incubator-devlake/helpers/pluginhelper/api"
 	"github.com/apache/incubator-devlake/plugins/bamboo/models"
-	"net/url"
 )
 
 // RemoteScopes list all available scope for users
@@ -65,21 +66,30 @@ func SearchRemoteScopes(input *plugin.ApiResourceInput) (*plugin.ApiResourceOutp
 				return nil, errors.BadInput.Wrap(err, "failed to get create apiClient")
 			}
 			query := initialQuery(queryData)
+			if len(queryData.Search) == 0 {
+				return nil, errors.BadInput.New("empty search query")
+			}
 			query.Set("searchTerm", queryData.Search[0])
 			// request search
 			res, err := apiClient.Get("search/plans.json", query, nil)
 			if err != nil {
 				return nil, err
 			}
+
 			resBody := models.ApiBambooSearchPlanResponse{}
 			err = api.UnmarshalResponse(res, &resBody)
 			if err != nil {
 				return nil, err
 			}
+
 			var apiBambooPlans []models.ApiBambooPlan
 			// append project to output
 			for _, apiResult := range resBody.SearchResults {
-				apiBambooPlans = append(apiBambooPlans, apiResult.Entity)
+				bambooPlan := models.ApiBambooPlan{
+					Key:  apiResult.SearchEntity.Key,
+					Name: apiResult.SearchEntity.PlanName,
+				}
+				apiBambooPlans = append(apiBambooPlans, bambooPlan)
 			}
 			return apiBambooPlans, err
 		})
@@ -87,7 +97,7 @@ func SearchRemoteScopes(input *plugin.ApiResourceInput) (*plugin.ApiResourceOutp
 
 func initialQuery(queryData *api.RemoteQueryData) url.Values {
 	query := url.Values{}
-	query.Set("showEmpty", fmt.Sprintf("%v", true))
+	query.Set("showEmpty", fmt.Sprintf("%v", false))
 	query.Set("max-result", fmt.Sprintf("%v", queryData.PerPage))
 	query.Set("start-index", fmt.Sprintf("%v", (queryData.Page-1)*queryData.PerPage))
 	return query
diff --git a/backend/plugins/bamboo/models/plan.go b/backend/plugins/bamboo/models/plan.go
index db29f5e23..76e892fb1 100644
--- a/backend/plugins/bamboo/models/plan.go
+++ b/backend/plugins/bamboo/models/plan.go
@@ -87,25 +87,6 @@ type ApiBambooPlan struct {
 	} `json:"planKey"`
 }
 
-//type ApiBambooPlan struct {
-//	Expand                    string `json:"expand"`
-//	Description               string `json:"description"`
-//	ShortName                 string `json:"shortName"`
-//	BuildName                 string `json:"buildName"`
-//	ShortKey                  string `json:"shortKey"`
-//	Type                      string `json:"type"`
-//	Enabled                   bool   `json:"enabled"`
-//	ProjectKey                string `json:"projectKey"`
-//	ProjectName               string `json:"projectName"`
-//	ApiBambooLink             `json:"link"`
-//	IsFavourite               bool    `json:"isFavourite"`
-//	IsActive                  bool    `json:"isActive"`
-//	IsBuilding                bool    `json:"isBuilding"`
-//	AverageBuildTimeInSeconds float64 `json:"averageBuildTimeInSeconds"`
-//	Key                       string  `json:"key"`
-//	Name                      string  `json:"name"`
-//}
-
 func (p ApiBambooPlan) ConvertApiScope() plugin.ToolLayerScope {
 	return &BambooPlan{
 		PlanKey:   p.Key,
@@ -119,10 +100,20 @@ func (p ApiBambooPlan) ConvertApiScope() plugin.ToolLayerScope {
 	}
 }
 
+type SearchEntity struct {
+	ID          string `json:"id"`
+	Key         string `json:"key"`
+	ProjectName string `json:"projectName"`
+	PlanName    string `json:"planName"`
+	BranchName  string `json:"branchName"`
+	Description string `json:"description"`
+	Type        string `json:"type"`
+}
+
 type ApiSearchResult struct {
-	Id         string        `json:"id"`
-	EntityType string        `json:"entityType"`
-	Entity     ApiBambooPlan `json:"entity"`
+	Id           string       `json:"id"`
+	Type         string       `json:"type"`
+	SearchEntity SearchEntity `json:"searchEntity"`
 }
 
 type ApiBambooSearchPlanResponse struct {