[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
|
@ -18,12 +18,6 @@ const (
|
|||
SearchOrderByRecentUpdated SearchOrderBy = "updated_unix DESC"
|
||||
SearchOrderByOldest SearchOrderBy = "created_unix ASC"
|
||||
SearchOrderByNewest SearchOrderBy = "created_unix DESC"
|
||||
SearchOrderBySize SearchOrderBy = "size ASC"
|
||||
SearchOrderBySizeReverse SearchOrderBy = "size DESC"
|
||||
SearchOrderByGitSize SearchOrderBy = "git_size ASC"
|
||||
SearchOrderByGitSizeReverse SearchOrderBy = "git_size DESC"
|
||||
SearchOrderByLFSSize SearchOrderBy = "lfs_size ASC"
|
||||
SearchOrderByLFSSizeReverse SearchOrderBy = "lfs_size DESC"
|
||||
SearchOrderByID SearchOrderBy = "id ASC"
|
||||
SearchOrderByIDReverse SearchOrderBy = "id DESC"
|
||||
SearchOrderByStars SearchOrderBy = "num_stars ASC"
|
||||
|
|
|
@ -205,31 +205,6 @@ type SearchRepoOptions struct {
|
|||
OnlyShowRelevant bool
|
||||
}
|
||||
|
||||
// SearchOrderBy is used to sort the result
|
||||
type SearchOrderBy string
|
||||
|
||||
func (s SearchOrderBy) String() string {
|
||||
return string(s)
|
||||
}
|
||||
|
||||
// Strings for sorting result
|
||||
const (
|
||||
SearchOrderByAlphabetically SearchOrderBy = "name ASC"
|
||||
SearchOrderByAlphabeticallyReverse SearchOrderBy = "name DESC"
|
||||
SearchOrderByLeastUpdated SearchOrderBy = "updated_unix ASC"
|
||||
SearchOrderByRecentUpdated SearchOrderBy = "updated_unix DESC"
|
||||
SearchOrderByOldest SearchOrderBy = "created_unix ASC"
|
||||
SearchOrderByNewest SearchOrderBy = "created_unix DESC"
|
||||
SearchOrderBySize SearchOrderBy = "size ASC"
|
||||
SearchOrderBySizeReverse SearchOrderBy = "size DESC"
|
||||
SearchOrderByID SearchOrderBy = "id ASC"
|
||||
SearchOrderByIDReverse SearchOrderBy = "id DESC"
|
||||
SearchOrderByStars SearchOrderBy = "num_stars ASC"
|
||||
SearchOrderByStarsReverse SearchOrderBy = "num_stars DESC"
|
||||
SearchOrderByForks SearchOrderBy = "num_forks ASC"
|
||||
SearchOrderByForksReverse SearchOrderBy = "num_forks DESC"
|
||||
)
|
||||
|
||||
// UserOwnedRepoCond returns user ownered repositories
|
||||
func UserOwnedRepoCond(userID int64) builder.Cond {
|
||||
return builder.Eq{
|
||||
|
|
|
@ -5,20 +5,72 @@ package repo
|
|||
|
||||
import "code.gitea.io/gitea/models/db"
|
||||
|
||||
// Strings for sorting result
|
||||
const (
|
||||
// only used for repos
|
||||
SearchOrderByAlphabetically db.SearchOrderBy = "owner_name ASC, name ASC"
|
||||
SearchOrderByAlphabeticallyReverse db.SearchOrderBy = "owner_name DESC, name DESC"
|
||||
SearchOrderBySize db.SearchOrderBy = "size ASC"
|
||||
SearchOrderBySizeReverse db.SearchOrderBy = "size DESC"
|
||||
SearchOrderByGitSize db.SearchOrderBy = "git_size ASC"
|
||||
SearchOrderByGitSizeReverse db.SearchOrderBy = "git_size DESC"
|
||||
SearchOrderByLFSSize db.SearchOrderBy = "lfs_size ASC"
|
||||
SearchOrderByLFSSizeReverse db.SearchOrderBy = "lfs_size DESC"
|
||||
// alias as also used elsewhere
|
||||
SearchOrderByLeastUpdated db.SearchOrderBy = db.SearchOrderByLeastUpdated
|
||||
SearchOrderByRecentUpdated db.SearchOrderBy = db.SearchOrderByRecentUpdated
|
||||
SearchOrderByOldest db.SearchOrderBy = db.SearchOrderByOldest
|
||||
SearchOrderByNewest db.SearchOrderBy = db.SearchOrderByNewest
|
||||
SearchOrderByID db.SearchOrderBy = db.SearchOrderByID
|
||||
SearchOrderByIDReverse db.SearchOrderBy = db.SearchOrderByIDReverse
|
||||
SearchOrderByStars db.SearchOrderBy = db.SearchOrderByStars
|
||||
SearchOrderByStarsReverse db.SearchOrderBy = db.SearchOrderByStarsReverse
|
||||
SearchOrderByForks db.SearchOrderBy = db.SearchOrderByForks
|
||||
SearchOrderByForksReverse db.SearchOrderBy = db.SearchOrderByForksReverse
|
||||
)
|
||||
|
||||
// SearchOrderByMap represents all possible search order
|
||||
var SearchOrderByMap = map[string]map[string]db.SearchOrderBy{
|
||||
"asc": {
|
||||
"alpha": "owner_name ASC, name ASC",
|
||||
"created": db.SearchOrderByOldest,
|
||||
"updated": db.SearchOrderByLeastUpdated,
|
||||
"size": db.SearchOrderBySize,
|
||||
"id": db.SearchOrderByID,
|
||||
"alpha": SearchOrderByAlphabetically,
|
||||
"created": SearchOrderByOldest,
|
||||
"updated": SearchOrderByLeastUpdated,
|
||||
"size": SearchOrderBySize,
|
||||
"git_size": SearchOrderByGitSize,
|
||||
"lfs_size": SearchOrderByLFSSize,
|
||||
"id": SearchOrderByID,
|
||||
"stars": SearchOrderByStars,
|
||||
"forks": SearchOrderByForks,
|
||||
},
|
||||
"desc": {
|
||||
"alpha": "owner_name DESC, name DESC",
|
||||
"created": db.SearchOrderByNewest,
|
||||
"updated": db.SearchOrderByRecentUpdated,
|
||||
"size": db.SearchOrderBySizeReverse,
|
||||
"id": db.SearchOrderByIDReverse,
|
||||
"alpha": SearchOrderByAlphabeticallyReverse,
|
||||
"created": SearchOrderByNewest,
|
||||
"updated": SearchOrderByRecentUpdated,
|
||||
"size": SearchOrderBySizeReverse,
|
||||
"git_size": SearchOrderByGitSizeReverse,
|
||||
"lfs_size": SearchOrderByLFSSizeReverse,
|
||||
"id": SearchOrderByIDReverse,
|
||||
"stars": SearchOrderByStarsReverse,
|
||||
"forks": SearchOrderByForksReverse,
|
||||
},
|
||||
}
|
||||
|
||||
// SearchOrderByFlatMap is similar to SearchOrderByMap but use human language keywords
|
||||
// to decide between asc and desc
|
||||
var SearchOrderByFlatMap = map[string]db.SearchOrderBy{
|
||||
"newest": SearchOrderByMap["desc"]["created"],
|
||||
"oldest": SearchOrderByMap["asc"]["created"],
|
||||
"leastupdate": SearchOrderByMap["asc"]["updated"],
|
||||
"reversealphabetically": SearchOrderByMap["desc"]["alpha"],
|
||||
"alphabetically": SearchOrderByMap["asc"]["alpha"],
|
||||
"reversesize": SearchOrderByMap["desc"]["size"],
|
||||
"size": SearchOrderByMap["asc"]["size"],
|
||||
"reversegitsize": SearchOrderByMap["desc"]["git_size"],
|
||||
"gitsize": SearchOrderByMap["asc"]["git_size"],
|
||||
"reverselfssize": SearchOrderByMap["desc"]["lfs_size"],
|
||||
"lfssize": SearchOrderByMap["asc"]["lfs_size"],
|
||||
"moststars": SearchOrderByMap["desc"]["stars"],
|
||||
"feweststars": SearchOrderByMap["asc"]["stars"],
|
||||
"mostforks": SearchOrderByMap["desc"]["forks"],
|
||||
"fewestforks": SearchOrderByMap["asc"]["forks"],
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue