mirror of https://github.com/go-gitea/gitea.git
Added issue search via api (#3612)
* Started implementing issue api search * Implemented issue search via api * Added search to swagger.json * Removed todo * fmt * Added comment to generate swagger json via "generate-swagger" * Simplified search * fmt * Removed unessecary comment * Removed unessecary declaration of the issues-variable * Removed unessecary comment * Removed unessecary comment * Added explanation keyword * Simplified check for empty keyword * corrected check if keyword is empty
This commit is contained in:
parent
d71f510c62
commit
1a83581121
|
@ -1830,6 +1830,12 @@
|
||||||
"description": "page number of requested issues",
|
"description": "page number of requested issues",
|
||||||
"name": "page",
|
"name": "page",
|
||||||
"in": "query"
|
"in": "query"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "search string",
|
||||||
|
"name": "q",
|
||||||
|
"in": "query"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
"code.gitea.io/gitea/modules/indexer"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
@ -42,6 +43,10 @@ func ListIssues(ctx *context.APIContext) {
|
||||||
// in: query
|
// in: query
|
||||||
// description: page number of requested issues
|
// description: page number of requested issues
|
||||||
// type: integer
|
// type: integer
|
||||||
|
// - name: q
|
||||||
|
// in: query
|
||||||
|
// description: search string
|
||||||
|
// type: string
|
||||||
// responses:
|
// responses:
|
||||||
// "200":
|
// "200":
|
||||||
// "$ref": "#/responses/IssueList"
|
// "$ref": "#/responses/IssueList"
|
||||||
|
@ -55,12 +60,30 @@ func ListIssues(ctx *context.APIContext) {
|
||||||
isClosed = util.OptionalBoolFalse
|
isClosed = util.OptionalBoolFalse
|
||||||
}
|
}
|
||||||
|
|
||||||
issues, err := models.Issues(&models.IssuesOptions{
|
var issues []*models.Issue
|
||||||
|
|
||||||
|
keyword := strings.Trim(ctx.Query("q"), " ")
|
||||||
|
if strings.IndexByte(keyword, 0) >= 0 {
|
||||||
|
keyword = ""
|
||||||
|
}
|
||||||
|
var issueIDs []int64
|
||||||
|
var err error
|
||||||
|
if len(keyword) > 0 {
|
||||||
|
issueIDs, err = indexer.SearchIssuesByKeyword(ctx.Repo.Repository.ID, keyword)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 {
|
||||||
|
issues, err = models.Issues(&models.IssuesOptions{
|
||||||
RepoIDs: []int64{ctx.Repo.Repository.ID},
|
RepoIDs: []int64{ctx.Repo.Repository.ID},
|
||||||
Page: ctx.QueryInt("page"),
|
Page: ctx.QueryInt("page"),
|
||||||
PageSize: setting.UI.IssuePagingNum,
|
PageSize: setting.UI.IssuePagingNum,
|
||||||
IsClosed: isClosed,
|
IsClosed: isClosed,
|
||||||
|
IssueIDs: issueIDs,
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "Issues", err)
|
ctx.Error(500, "Issues", err)
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue