diff options
author | 6543 <6543@obermui.de> | 2024-10-07 23:21:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-07 23:21:07 +0200 |
commit | bdd655f2bde5facada4394f36fe54e364787de7a (patch) | |
tree | 5748237eea83716d24b2275f81e0cafcda576ea0 /routers/api/v1 | |
parent | fa35ace9fb0383cee78e1717bcb6eab1224fb4f1 (diff) | |
download | gitea-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.go | 42 |
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) |