aboutsummaryrefslogtreecommitdiffstats
path: root/routers/api/v1
diff options
context:
space:
mode:
author6543 <6543@obermui.de>2024-10-07 23:21:07 +0200
committerGitHub <noreply@github.com>2024-10-07 23:21:07 +0200
commitbdd655f2bde5facada4394f36fe54e364787de7a (patch)
tree5748237eea83716d24b2275f81e0cafcda576ea0 /routers/api/v1
parentfa35ace9fb0383cee78e1717bcb6eab1224fb4f1 (diff)
downloadgitea-bdd655f2bde5facada4394f36fe54e364787de7a.tar.gz
gitea-bdd655f2bde5facada4394f36fe54e364787de7a.zip
Allow filtering PRs by poster in the ListPullRequests API (#32209)
as title --- *Sponsored by Kithara Software GmbH*
Diffstat (limited to 'routers/api/v1')
-rw-r--r--routers/api/v1/repo/pull.go42
1 files changed, 33 insertions, 9 deletions
diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go
index 4e3de77032..34ebcb42d5 100644
--- a/routers/api/v1/repo/pull.go
+++ b/routers/api/v1/repo/pull.go
@@ -52,56 +52,79 @@ func ListPullRequests(ctx *context.APIContext) {
// parameters:
// - name: owner
// in: path
- // description: owner of the repo
+ // description: Owner of the repo
// type: string
// required: true
// - name: repo
// in: path
- // description: name of the repo
+ // description: Name of the repo
// type: string
// required: true
// - name: state
// in: query
- // description: "State of pull request: open or closed (optional)"
+ // description: State of pull request
// type: string
- // enum: [closed, open, all]
+ // enum: [open, closed, all]
+ // default: open
// - name: sort
// in: query
- // description: "Type of sort"
+ // description: Type of sort
// type: string
// enum: [oldest, recentupdate, leastupdate, mostcomment, leastcomment, priority]
// - name: milestone
// in: query
- // description: "ID of the milestone"
+ // description: ID of the milestone
// type: integer
// format: int64
// - name: labels
// in: query
- // description: "Label IDs"
+ // description: Label IDs
// type: array
// collectionFormat: multi
// items:
// type: integer
// format: int64
+ // - name: poster
+ // in: query
+ // description: Filter by pull request author
+ // type: string
// - name: page
// in: query
- // description: page number of results to return (1-based)
+ // description: Page number of results to return (1-based)
// type: integer
+ // minimum: 1
+ // default: 1
// - name: limit
// in: query
- // description: page size of results
+ // description: Page size of results
// type: integer
+ // minimum: 0
// responses:
// "200":
// "$ref": "#/responses/PullRequestList"
// "404":
// "$ref": "#/responses/notFound"
+ // "500":
+ // "$ref": "#/responses/error"
labelIDs, err := base.StringsToInt64s(ctx.FormStrings("labels"))
if err != nil {
ctx.Error(http.StatusInternalServerError, "PullRequests", err)
return
}
+ var posterID int64
+ if posterStr := ctx.FormString("poster"); posterStr != "" {
+ poster, err := user_model.GetUserByName(ctx, posterStr)
+ if err != nil {
+ if user_model.IsErrUserNotExist(err) {
+ ctx.Error(http.StatusBadRequest, "Poster not found", err)
+ } else {
+ ctx.Error(http.StatusInternalServerError, "GetUserByName", err)
+ }
+ return
+ }
+ posterID = poster.ID
+ }
listOptions := utils.GetListOptions(ctx)
prs, maxResults, err := issues_model.PullRequests(ctx, ctx.Repo.Repository.ID, &issues_model.PullRequestsOptions{
ListOptions: listOptions,
@@ -109,6 +132,7 @@ func ListPullRequests(ctx *context.APIContext) {
SortType: ctx.FormTrim("sort"),
Labels: labelIDs,
MilestoneID: ctx.FormInt64("milestone"),
+ PosterID: posterID,
})
if err != nil {
ctx.Error(http.StatusInternalServerError, "PullRequests", err)