summaryrefslogtreecommitdiffstats
path: root/models/repo/search.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/repo/search.go')
-rw-r--r--models/repo/search.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/models/repo/search.go b/models/repo/search.go
new file mode 100644
index 0000000..a73d9fc
--- /dev/null
+++ b/models/repo/search.go
@@ -0,0 +1,52 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package repo
+
+import "code.gitea.io/gitea/models/db"
+
+// OrderByMap represents all possible search order
+var OrderByMap = map[string]map[string]db.SearchOrderBy{
+ "asc": {
+ "alpha": "owner_name ASC, name ASC",
+ "created": db.SearchOrderByOldest,
+ "updated": db.SearchOrderByLeastUpdated,
+ "size": "size ASC",
+ "git_size": "git_size ASC",
+ "lfs_size": "lfs_size ASC",
+ "id": db.SearchOrderByID,
+ "stars": db.SearchOrderByStars,
+ "forks": db.SearchOrderByForks,
+ },
+ "desc": {
+ "alpha": "owner_name DESC, name DESC",
+ "created": db.SearchOrderByNewest,
+ "updated": db.SearchOrderByRecentUpdated,
+ "size": "size DESC",
+ "git_size": "git_size DESC",
+ "lfs_size": "lfs_size DESC",
+ "id": db.SearchOrderByIDReverse,
+ "stars": db.SearchOrderByStarsReverse,
+ "forks": db.SearchOrderByForksReverse,
+ },
+}
+
+// OrderByFlatMap is similar to OrderByMap but use human language keywords
+// to decide between asc and desc
+var OrderByFlatMap = map[string]db.SearchOrderBy{
+ "newest": OrderByMap["desc"]["created"],
+ "oldest": OrderByMap["asc"]["created"],
+ "leastupdate": OrderByMap["asc"]["updated"],
+ "reversealphabetically": OrderByMap["desc"]["alpha"],
+ "alphabetically": OrderByMap["asc"]["alpha"],
+ "reversesize": OrderByMap["desc"]["size"],
+ "size": OrderByMap["asc"]["size"],
+ "reversegitsize": OrderByMap["desc"]["git_size"],
+ "gitsize": OrderByMap["asc"]["git_size"],
+ "reverselfssize": OrderByMap["desc"]["lfs_size"],
+ "lfssize": OrderByMap["asc"]["lfs_size"],
+ "moststars": OrderByMap["desc"]["stars"],
+ "feweststars": OrderByMap["asc"]["stars"],
+ "mostforks": OrderByMap["desc"]["forks"],
+ "fewestforks": OrderByMap["asc"]["forks"],
+}