summaryrefslogtreecommitdiffstats
path: root/routers/api/v1
diff options
context:
space:
mode:
authorLanre Adelowo <adelowomailbox@gmail.com>2019-02-04 16:20:44 +0100
committertechknowlogick <matti@mdranta.net>2019-02-04 10:20:44 -0500
commit024871ade60c619302430a2852018dcbd1b35b79 (patch)
treed8a78311e8c40b063ef63424786bcbd2e00ef205 /routers/api/v1
parentf21ae12abb2529ea6e8ab113706f11d848c74f65 (diff)
downloadgitea-024871ade60c619302430a2852018dcbd1b35b79.tar.gz
gitea-024871ade60c619302430a2852018dcbd1b35b79.zip
Add label names as filter in issue search api (#5946)
Diffstat (limited to 'routers/api/v1')
-rw-r--r--routers/api/v1/repo/issue.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/routers/api/v1/repo/issue.go b/routers/api/v1/repo/issue.go
index fe00715949..1cb9c2f819 100644
--- a/routers/api/v1/repo/issue.go
+++ b/routers/api/v1/repo/issue.go
@@ -43,6 +43,10 @@ func ListIssues(ctx *context.APIContext) {
// in: query
// description: whether issue is open or closed
// type: string
+ // - name: labels
+ // in: query
+ // description: comma separated list of labels. Fetch only issues that have any of this labels. Non existent labels are discarded
+ // type: string
// - name: page
// in: query
// description: page number of requested issues
@@ -71,20 +75,30 @@ func ListIssues(ctx *context.APIContext) {
keyword = ""
}
var issueIDs []int64
+ var labelIDs []int64
var err error
if len(keyword) > 0 {
issueIDs, err = indexer.SearchIssuesByKeyword(ctx.Repo.Repository.ID, keyword)
}
+ if splitted := strings.Split(ctx.Query("labels"), ","); len(splitted) > 0 {
+ labelIDs, err = models.GetLabelIDsInRepoByNames(ctx.Repo.Repository.ID, splitted)
+ if err != nil {
+ ctx.Error(500, "GetLabelIDsInRepoByNames", err)
+ return
+ }
+ }
+
// Only fetch the issues if we either don't have a keyword or the search returned issues
// This would otherwise return all issues if no issues were found by the search.
- if len(keyword) == 0 || len(issueIDs) > 0 {
+ if len(keyword) == 0 || len(issueIDs) > 0 || len(labelIDs) > 0 {
issues, err = models.Issues(&models.IssuesOptions{
RepoIDs: []int64{ctx.Repo.Repository.ID},
Page: ctx.QueryInt("page"),
PageSize: setting.UI.IssuePagingNum,
IsClosed: isClosed,
IssueIDs: issueIDs,
+ LabelIDs: labelIDs,
})
}