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

klesh 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 1d7b2fc31 feat: add jira search-remote-scopes (#6111)
1d7b2fc31 is described below

commit 1d7b2fc312e36b528b8bcd7a65a38590d222fd93
Author: abeizn <[email protected]>
AuthorDate: Tue Sep 19 17:50:11 2023 +0800

    feat: add jira search-remote-scopes (#6111)
---
 backend/plugins/jira/api/remote.go | 44 ++++++++++++++++++++++++++++++++++++++
 backend/plugins/jira/impl/impl.go  |  3 +++
 2 files changed, 47 insertions(+)

diff --git a/backend/plugins/jira/api/remote.go 
b/backend/plugins/jira/api/remote.go
index 441aa336d..512bfbb22 100644
--- a/backend/plugins/jira/api/remote.go
+++ b/backend/plugins/jira/api/remote.go
@@ -77,6 +77,50 @@ func RemoteScopes(input *plugin.ApiResourceInput) 
(*plugin.ApiResourceOutput, er
                })
 }
 
+// SearchRemoteScopes use the Search API and only return board
+// @Summary use the Search API and only return board
+// @Description use the Search API and only return board
+// @Tags plugins/jira
+// @Accept application/json
+// @Param connectionId path int false "connection ID"
+// @Param search query string false "search"
+// @Param page query int false "page number"
+// @Param pageSize query int false "page size per page"
+// @Success 200  {object} api.SearchRemoteScopesOutput
+// @Failure 400  {object} shared.ApiBody "Bad Request"
+// @Failure 500  {object} shared.ApiBody "Internal Error"
+// @Router /plugins/jira/connections/{connectionId}/search-remote-scopes [GET]
+func SearchRemoteScopes(input *plugin.ApiResourceInput) 
(*plugin.ApiResourceOutput, errors.Error) {
+       return remoteHelper.SearchRemoteScopes(input,
+               func(basicRes context.BasicRes, queryData *api.RemoteQueryData, 
connection models.JiraConnection) ([]apiv2models.Board, errors.Error) {
+                       apiClient, err := 
api.NewApiClientFromConnection(gocontext.TODO(), basicRes, &connection)
+                       if err != nil {
+                               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("name", queryData.Search[0])
+
+                       // request search
+                       res, err := apiClient.Get("agile/1.0/board?", query, 
nil)
+                       if err != nil {
+                               return nil, err
+                       }
+                       var resBody struct {
+                               Values []apiv2models.Board `json:"values"`
+                       }
+                       err = api.UnmarshalResponse(res, &resBody)
+                       if err != nil {
+                               return nil, err
+                       }
+
+                       return resBody.Values, err
+
+               })
+}
+
 func initialQuery(queryData *api.RemoteQueryData) url.Values {
        query := url.Values{}
        query.Set("maxResults", fmt.Sprintf("%v", queryData.PerPage))
diff --git a/backend/plugins/jira/impl/impl.go 
b/backend/plugins/jira/impl/impl.go
index 20e6a052f..81a577cf3 100644
--- a/backend/plugins/jira/impl/impl.go
+++ b/backend/plugins/jira/impl/impl.go
@@ -293,6 +293,9 @@ func (p Jira) ApiResources() 
map[string]map[string]plugin.ApiResourceHandler {
                "connections/:connectionId/remote-scopes": {
                        "GET": api.RemoteScopes,
                },
+               "connections/:connectionId/search-remote-scopes": {
+                       "GET": api.SearchRemoteScopes,
+               },
                "connections/:connectionId/scopes/:scopeId": {
                        "GET":    api.GetScope,
                        "PATCH":  api.UpdateScope,

Reply via email to