Merge 5d21d47973
into 7be5935c55
This commit is contained in:
commit
a97c6be650
12
public/swagger.v1.json
vendored
12
public/swagger.v1.json
vendored
|
@ -985,6 +985,18 @@
|
|||
"description": "if `uid` is given, search only for repos that the user owns",
|
||||
"name": "exclusive",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "sort repos by attribute. Supported values are \"alpha\", \"created\", \"updated\", \"size\", and \"id\". Default is \"alpha\"",
|
||||
"name": "sort",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "sort order, either \"asc\" (ascending) or \"desc\" (descending). Default is \"asc\", ignored if \"sort\" is not specified.",
|
||||
"name": "order",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
|
|
@ -20,6 +20,23 @@ import (
|
|||
api "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
var searchOrderByMap = map[string]map[string]models.SearchOrderBy{
|
||||
"asc": {
|
||||
"alpha": models.SearchOrderByAlphabetically,
|
||||
"created": models.SearchOrderByOldest,
|
||||
"updated": models.SearchOrderByLeastUpdated,
|
||||
"size": models.SearchOrderBySize,
|
||||
"id": models.SearchOrderByID,
|
||||
},
|
||||
"desc": {
|
||||
"alpha": models.SearchOrderByAlphabeticallyReverse,
|
||||
"created": models.SearchOrderByNewest,
|
||||
"updated": models.SearchOrderByRecentUpdated,
|
||||
"size": models.SearchOrderBySizeReverse,
|
||||
"id": models.SearchOrderByIDReverse,
|
||||
},
|
||||
}
|
||||
|
||||
// Search repositories via options
|
||||
func Search(ctx *context.APIContext) {
|
||||
// swagger:operation GET /repos/search repository repoSearch
|
||||
|
@ -53,6 +70,17 @@ func Search(ctx *context.APIContext) {
|
|||
// in: query
|
||||
// description: if `uid` is given, search only for repos that the user owns
|
||||
// type: boolean
|
||||
// - name: sort
|
||||
// in: query
|
||||
// description: sort repos by attribute. Supported values are
|
||||
// "alpha", "created", "updated", "size", and "id".
|
||||
// Default is "alpha"
|
||||
// type: string
|
||||
// - name: order
|
||||
// in: query
|
||||
// description: sort order, either "asc" (ascending) or "desc" (descending).
|
||||
// Default is "asc", ignored if "sort" is not specified.
|
||||
// type: string
|
||||
// responses:
|
||||
// "200":
|
||||
// "$ref": "#/responses/SearchResults"
|
||||
|
@ -88,6 +116,25 @@ func Search(ctx *context.APIContext) {
|
|||
return
|
||||
}
|
||||
|
||||
var sortMode = ctx.Query("sort")
|
||||
if len(sortMode) > 0 {
|
||||
var sortOrder = ctx.Query("order")
|
||||
if len(sortOrder) == 0 {
|
||||
sortOrder = "asc"
|
||||
}
|
||||
if searchModeMap, ok := searchOrderByMap[sortOrder]; ok {
|
||||
if orderBy, ok := searchModeMap[sortMode]; ok {
|
||||
opts.OrderBy = orderBy
|
||||
} else {
|
||||
ctx.Error(http.StatusUnprocessableEntity, "", fmt.Errorf("Invalid sort mode: \"%s\"", sortMode))
|
||||
return
|
||||
}
|
||||
} else {
|
||||
ctx.Error(http.StatusUnprocessableEntity, "", fmt.Errorf("Invalid sort order: \"%s\"", sortOrder))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var err error
|
||||
if opts.OwnerID > 0 {
|
||||
var repoOwner *models.User
|
||||
|
|
Loading…
Reference in New Issue
Block a user