[Refactor] Unify repo search order by logic (#30876)
have repo OrderBy definitions defined in one place and use a single type for OrderBy database options (cherry picked from commit bb04311b0b5b7a28f94c4bc409db1c4a04bcef17)
This commit is contained in:
parent
62ed5f2db5
commit
12e23ee199
6 changed files with 71 additions and 78 deletions
|
@ -107,7 +107,7 @@ func Search(ctx *context.APIContext) {
|
|||
// - name: sort
|
||||
// in: query
|
||||
// description: sort repos by attribute. Supported values are
|
||||
// "alpha", "created", "updated", "size", and "id".
|
||||
// "alpha", "created", "updated", "size", "git_size", "lfs_size", "stars", "forks" and "id".
|
||||
// Default is "alpha"
|
||||
// type: string
|
||||
// - name: order
|
||||
|
|
|
@ -6,6 +6,7 @@ package explore
|
|||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
|
@ -57,47 +58,18 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
|
|||
orderBy db.SearchOrderBy
|
||||
)
|
||||
|
||||
sortOrder := ctx.FormString("sort")
|
||||
sortOrder := strings.ToLower(ctx.FormString("sort"))
|
||||
if sortOrder == "" {
|
||||
sortOrder = setting.UI.ExploreDefaultSort
|
||||
}
|
||||
ctx.Data["SortType"] = sortOrder
|
||||
|
||||
switch sortOrder {
|
||||
case "newest":
|
||||
orderBy = db.SearchOrderByNewest
|
||||
case "oldest":
|
||||
orderBy = db.SearchOrderByOldest
|
||||
case "leastupdate":
|
||||
orderBy = db.SearchOrderByLeastUpdated
|
||||
case "reversealphabetically":
|
||||
orderBy = db.SearchOrderByAlphabeticallyReverse
|
||||
case "alphabetically":
|
||||
orderBy = db.SearchOrderByAlphabetically
|
||||
case "reversesize":
|
||||
orderBy = db.SearchOrderBySizeReverse
|
||||
case "size":
|
||||
orderBy = db.SearchOrderBySize
|
||||
case "reversegitsize":
|
||||
orderBy = db.SearchOrderByGitSizeReverse
|
||||
case "gitsize":
|
||||
orderBy = db.SearchOrderByGitSize
|
||||
case "reverselfssize":
|
||||
orderBy = db.SearchOrderByLFSSizeReverse
|
||||
case "lfssize":
|
||||
orderBy = db.SearchOrderByLFSSize
|
||||
case "moststars":
|
||||
orderBy = db.SearchOrderByStarsReverse
|
||||
case "feweststars":
|
||||
orderBy = db.SearchOrderByStars
|
||||
case "mostforks":
|
||||
orderBy = db.SearchOrderByForksReverse
|
||||
case "fewestforks":
|
||||
orderBy = db.SearchOrderByForks
|
||||
default:
|
||||
ctx.Data["SortType"] = "recentupdate"
|
||||
if order, ok := repo_model.SearchOrderByFlatMap[sortOrder]; ok {
|
||||
orderBy = order
|
||||
} else {
|
||||
sortOrder = "recentupdate"
|
||||
orderBy = db.SearchOrderByRecentUpdated
|
||||
}
|
||||
ctx.Data["SortType"] = sortOrder
|
||||
|
||||
keyword := ctx.FormTrim("q")
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue