feat(api): An order_by
param for user.ListMyRepos
Add an optional `order_by` parameter to the `user.ListMyRepos` handler (which handles the `/api/v1/user/repos` route), allowing a user to sort repos by name (the default), id, or size. The latter will be useful later for figuring out which repos use most space, which repos eat most into a user's quota. Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
This commit is contained in:
parent
b0a104d3d4
commit
250f87db59
2 changed files with 28 additions and 0 deletions
|
@ -99,9 +99,15 @@ func ListMyRepos(ctx *context.APIContext) {
|
||||||
// in: query
|
// in: query
|
||||||
// description: page size of results
|
// description: page size of results
|
||||||
// type: integer
|
// type: integer
|
||||||
|
// - name: order_by
|
||||||
|
// in: query
|
||||||
|
// description: order the repositories by name (default), id, or size
|
||||||
|
// type: string
|
||||||
// responses:
|
// responses:
|
||||||
// "200":
|
// "200":
|
||||||
// "$ref": "#/responses/RepositoryList"
|
// "$ref": "#/responses/RepositoryList"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
|
|
||||||
opts := &repo_model.SearchRepoOptions{
|
opts := &repo_model.SearchRepoOptions{
|
||||||
ListOptions: utils.GetListOptions(ctx),
|
ListOptions: utils.GetListOptions(ctx),
|
||||||
|
@ -110,6 +116,19 @@ func ListMyRepos(ctx *context.APIContext) {
|
||||||
Private: ctx.IsSigned,
|
Private: ctx.IsSigned,
|
||||||
IncludeDescription: true,
|
IncludeDescription: true,
|
||||||
}
|
}
|
||||||
|
orderBy := ctx.FormTrim("order_by")
|
||||||
|
switch orderBy {
|
||||||
|
case "name":
|
||||||
|
opts.OrderBy = "name ASC"
|
||||||
|
case "size":
|
||||||
|
opts.OrderBy = "size DESC"
|
||||||
|
case "id":
|
||||||
|
opts.OrderBy = "id ASC"
|
||||||
|
case "":
|
||||||
|
default:
|
||||||
|
ctx.Error(http.StatusUnprocessableEntity, "", "invalid order_by")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
repos, count, err := repo_model.SearchRepository(ctx, opts)
|
repos, count, err := repo_model.SearchRepository(ctx, opts)
|
||||||
|
|
9
templates/swagger/v1_json.tmpl
generated
9
templates/swagger/v1_json.tmpl
generated
|
@ -17529,11 +17529,20 @@
|
||||||
"description": "page size of results",
|
"description": "page size of results",
|
||||||
"name": "limit",
|
"name": "limit",
|
||||||
"in": "query"
|
"in": "query"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "order the repositories by name (default), id, or size",
|
||||||
|
"name": "order_by",
|
||||||
|
"in": "query"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"$ref": "#/responses/RepositoryList"
|
"$ref": "#/responses/RepositoryList"
|
||||||
|
},
|
||||||
|
"422": {
|
||||||
|
"$ref": "#/responses/validationError"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue