mirror of
https://github.com/Threnklyn/jira.git
synced 2026-06-07 13:33:32 +02:00
add pagination to search
This commit is contained in:
@@ -777,5 +777,6 @@ type SearchResults struct {
|
|||||||
Schema JSONTypeMap `json:"schema,omitempty" yaml:"schema,omitempty"`
|
Schema JSONTypeMap `json:"schema,omitempty" yaml:"schema,omitempty"`
|
||||||
StartAt int `json:"startAt,omitempty" yaml:"startAt,omitempty"`
|
StartAt int `json:"startAt,omitempty" yaml:"startAt,omitempty"`
|
||||||
Total int `json:"total,omitempty" yaml:"total,omitempty"`
|
Total int `json:"total,omitempty" yaml:"total,omitempty"`
|
||||||
|
IsLast bool `json:"isLast,omitempty" yaml:"isLast,omitempty"`
|
||||||
WarningMessages WarningMessages `json:"warningMessages,omitempty" yaml:"warningMessages,omitempty"`
|
WarningMessages WarningMessages `json:"warningMessages,omitempty" yaml:"warningMessages,omitempty"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,20 +79,36 @@ func (j *Jira) Search(sp SearchProvider) (*jiradata.SearchResults, error) {
|
|||||||
|
|
||||||
func Search(ua HttpClient, endpoint string, sp SearchProvider) (*jiradata.SearchResults, error) {
|
func Search(ua HttpClient, endpoint string, sp SearchProvider) (*jiradata.SearchResults, error) {
|
||||||
req := sp.ProvideSearchRequest()
|
req := sp.ProvideSearchRequest()
|
||||||
encoded, err := json.Marshal(req)
|
results := &jiradata.SearchResults{}
|
||||||
if err != nil {
|
issues := jiradata.Issues{}
|
||||||
return nil, err
|
for {
|
||||||
}
|
encoded, err := json.Marshal(req)
|
||||||
uri := URLJoin(endpoint, "rest/api/2/search")
|
if err != nil {
|
||||||
resp, err := ua.Post(uri, "application/json", bytes.NewBuffer(encoded))
|
return nil, err
|
||||||
if err != nil {
|
}
|
||||||
return nil, err
|
uri := URLJoin(endpoint, "rest/api/2/search")
|
||||||
}
|
resp, err := ua.Post(uri, "application/json", bytes.NewBuffer(encoded))
|
||||||
defer resp.Body.Close()
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if resp.StatusCode == 200 {
|
if resp.StatusCode != 200 {
|
||||||
results := &jiradata.SearchResults{}
|
return nil, responseError(resp)
|
||||||
return results, readJSON(resp.Body, results)
|
}
|
||||||
|
|
||||||
|
err = readJSON(resp.Body, results)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
issues = append(issues, results.Issues...)
|
||||||
|
req.StartAt = len(issues)
|
||||||
|
|
||||||
|
if len(issues) == results.Total || results.Total == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
resp.Body.Close()
|
||||||
}
|
}
|
||||||
return nil, responseError(resp)
|
results.Issues = issues
|
||||||
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user