From 691d272210bdd6f0830a8bd6da71280dfc677df5 Mon Sep 17 00:00:00 2001 From: Allen Wild Date: Tue, 15 May 2018 14:23:33 -0400 Subject: [PATCH] repos/search API: sync with PR branch Fix some CI failures and use asc/desc instead of 0/1 for the order parameter --- public/js/index.js | 2 +- public/swagger.v1.json | 4 ++-- routers/api/v1/repo/repo.go | 28 ++++++++++++++++++---------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/public/js/index.js b/public/js/index.js index 240b1b678773..a00248bc6b5e 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -1839,7 +1839,7 @@ function initVueComponents(){ return this.repos.length > 0 && this.repos.length < this.repoTypes[this.reposFilter].count; }, searchURL: function() { - return this.suburl + '/api/v1/repos/search?sort=updated&order=1&uid=' + this.uid + '&q=' + this.searchQuery + return this.suburl + '/api/v1/repos/search?sort=updated&order=desc&uid=' + this.uid + '&q=' + this.searchQuery + '&limit=' + this.searchLimit + '&mode=' + this.repoTypes[this.reposFilter].searchMode + (this.reposFilter !== 'all' ? '&exclusive=1' : ''); }, diff --git a/public/swagger.v1.json b/public/swagger.v1.json index 2c4bf8be06b3..7649df4d1937 100644 --- a/public/swagger.v1.json +++ b/public/swagger.v1.json @@ -923,8 +923,8 @@ "in": "query" }, { - "type": "integer", - "description": "sort order. 0 for ascending, 1 for descending. Default is ascending", + "type": "string", + "description": "sort order, either \"asc\" (ascending) or \"desc\" (descending). Default is \"asc\", ignored unless \"sort\" is also specified.", "name": "order", "in": "query" } diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 05deccbfd33f..9bcdd6f7aa7d 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -20,8 +20,8 @@ import ( api "code.gitea.io/sdk/gitea" ) -var SearchOrderByMap = [2]map[string]models.SearchOrderBy{ - map[string]models.SearchOrderBy{ +var searchOrderByMap = [2]map[string]models.SearchOrderBy{ + { // order == 0, ascending (default) "alpha": models.SearchOrderByAlphabetically, "created": models.SearchOrderByOldest, @@ -29,7 +29,7 @@ var SearchOrderByMap = [2]map[string]models.SearchOrderBy{ "size": models.SearchOrderBySize, "id": models.SearchOrderByID, }, - map[string]models.SearchOrderBy{ + { // order == 1, descending "alpha": models.SearchOrderByAlphabeticallyReverse, "created": models.SearchOrderByNewest, @@ -80,9 +80,9 @@ func Search(ctx *context.APIContext) { // type: string // - name: order // in: query - // description: sort order. 0 for ascending, 1 for descending. - // Default is ascending - // type: integer + // description: sort order, either "asc" (ascending) or "desc" (descending). + // Default is "asc", ignored unless "sort" is also specified. + // type: string // responses: // "200": // "$ref": "#/responses/SearchResults" @@ -120,13 +120,21 @@ func Search(ctx *context.APIContext) { var sortMode = ctx.Query("sort") if len(sortMode) > 0 { - var sortOrder = ctx.QueryInt("order") // will default to 0, i.e. ascending - if sortOrder < 0 || sortOrder > 1 { - ctx.Error(http.StatusUnprocessableEntity, "", fmt.Errorf("Invalid sort order: \"%d\"", sortOrder)) + var sortOrder = ctx.Query("order") + var sortOrderIdx int + switch sortOrder { + case "": + sortOrderIdx = 0 + case "asc": + sortOrderIdx = 0 + case "desc": + sortOrderIdx = 1 + default: + ctx.Error(http.StatusUnprocessableEntity, "", fmt.Errorf("Invalid sort order: \"%s\"", sortOrder)) return } - if orderBy, ok := SearchOrderByMap[sortOrder][sortMode]; ok { + if orderBy, ok := searchOrderByMap[sortOrderIdx][sortMode]; ok { opts.OrderBy = orderBy } else { ctx.Error(http.StatusUnprocessableEntity, "", fmt.Errorf("Invalid sort mode: \"%s\"", sortMode))