Skip to content

Commit 9a75a5d

Browse files
Morlinestlafriks
authored andcommitted
Use custom type and constants to hold order by options (#2572)
1 parent ca68a75 commit 9a75a5d

File tree

3 files changed

+51
-32
lines changed

3 files changed

+51
-32
lines changed

models/repo_list.go

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -97,21 +97,40 @@ type SearchRepoOptions struct {
9797
// Owner in we search search
9898
//
9999
// in: query
100-
OwnerID int64 `json:"uid"`
101-
Searcher *User `json:"-"` //ID of the person who's seeking
102-
OrderBy string `json:"-"`
103-
Private bool `json:"-"` // Include private repositories in results
104-
Collaborate bool `json:"-"` // Include collaborative repositories
105-
Starred bool `json:"-"`
106-
Page int `json:"-"`
107-
IsProfile bool `json:"-"`
100+
OwnerID int64 `json:"uid"`
101+
Searcher *User `json:"-"` //ID of the person who's seeking
102+
OrderBy SearchOrderBy `json:"-"`
103+
Private bool `json:"-"` // Include private repositories in results
104+
Collaborate bool `json:"-"` // Include collaborative repositories
105+
Starred bool `json:"-"`
106+
Page int `json:"-"`
107+
IsProfile bool `json:"-"`
108108
// Limit of result
109109
//
110110
// maximum: setting.ExplorePagingNum
111111
// in: query
112112
PageSize int `json:"limit"` // Can be smaller than or equal to setting.ExplorePagingNum
113113
}
114114

115+
//SearchOrderBy is used to sort the result
116+
type SearchOrderBy string
117+
118+
func (s SearchOrderBy) String() string {
119+
return string(s)
120+
}
121+
122+
// Strings for sorting result
123+
const (
124+
SearchOrderByAlphabetically SearchOrderBy = "name ASC"
125+
SearchOrderByAlphabeticallyReverse = "name DESC"
126+
SearchOrderByLeastUpdated = "updated_unix ASC"
127+
SearchOrderByRecentUpdated = "updated_unix DESC"
128+
SearchOrderByOldest = "created_unix ASC"
129+
SearchOrderByNewest = "created_unix DESC"
130+
SearchOrderBySize = "size ASC"
131+
SearchOrderBySizeReverse = "size DESC"
132+
)
133+
115134
// SearchRepositoryByName takes keyword and part of repository name to search,
116135
// it returns results in given range and number of total results.
117136
func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, count int64, err error) {
@@ -164,7 +183,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, coun
164183
}
165184

166185
if len(opts.OrderBy) == 0 {
167-
opts.OrderBy = "name ASC"
186+
opts.OrderBy = SearchOrderByAlphabetically
168187
}
169188

170189
sess := x.NewSession()
@@ -193,7 +212,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, coun
193212
if err = sess.
194213
Where(cond).
195214
Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
196-
OrderBy(opts.OrderBy).
215+
OrderBy(opts.OrderBy.String()).
197216
Find(&repos); err != nil {
198217
return nil, 0, fmt.Errorf("Repo: %v", err)
199218
}
@@ -217,7 +236,7 @@ func Repositories(opts *SearchRepoOptions) (_ RepositoryList, count int64, err e
217236

218237
if err = x.
219238
Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
220-
OrderBy(opts.OrderBy).
239+
OrderBy(opts.OrderBy.String()).
221240
Find(&repos); err != nil {
222241
return nil, 0, fmt.Errorf("Repo: %v", err)
223242
}
@@ -236,7 +255,7 @@ func GetRecentUpdatedRepositories(opts *SearchRepoOptions) (repos RepositoryList
236255
var cond = builder.NewCond()
237256

238257
if len(opts.OrderBy) == 0 {
239-
opts.OrderBy = "updated_unix DESC"
258+
opts.OrderBy = SearchOrderByRecentUpdated
240259
}
241260

242261
if !opts.Private {
@@ -270,7 +289,7 @@ func GetRecentUpdatedRepositories(opts *SearchRepoOptions) (repos RepositoryList
270289
if err = x.Where(cond).
271290
Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
272291
Limit(opts.PageSize).
273-
OrderBy(opts.OrderBy).
292+
OrderBy(opts.OrderBy.String()).
274293
Find(&repos); err != nil {
275294
return nil, 0, fmt.Errorf("Repo: %v", err)
276295
}

routers/home.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,27 +86,27 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
8686
repos []*models.Repository
8787
count int64
8888
err error
89-
orderBy string
89+
orderBy models.SearchOrderBy
9090
)
9191
ctx.Data["SortType"] = ctx.Query("sort")
9292

9393
switch ctx.Query("sort") {
9494
case "oldest":
95-
orderBy = "created_unix ASC"
95+
orderBy = models.SearchOrderByOldest
9696
case "recentupdate":
97-
orderBy = "updated_unix DESC"
97+
orderBy = models.SearchOrderByRecentUpdated
9898
case "leastupdate":
99-
orderBy = "updated_unix ASC"
99+
orderBy = models.SearchOrderByLeastUpdated
100100
case "reversealphabetically":
101-
orderBy = "name DESC"
101+
orderBy = models.SearchOrderByAlphabeticallyReverse
102102
case "alphabetically":
103-
orderBy = "name ASC"
103+
orderBy = models.SearchOrderByAlphabetically
104104
case "reversesize":
105-
orderBy = "size DESC"
105+
orderBy = models.SearchOrderBySizeReverse
106106
case "size":
107-
orderBy = "size ASC"
107+
orderBy = models.SearchOrderBySize
108108
default:
109-
orderBy = "created_unix DESC"
109+
orderBy = models.SearchOrderByNewest
110110
}
111111

112112
keyword := strings.Trim(ctx.Query("q"), " ")

routers/user/profile.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -107,26 +107,26 @@ func Profile(ctx *context.Context) {
107107
var (
108108
repos []*models.Repository
109109
count int64
110-
orderBy string
110+
orderBy models.SearchOrderBy
111111
)
112112

113113
ctx.Data["SortType"] = ctx.Query("sort")
114114
switch ctx.Query("sort") {
115115
case "newest":
116-
orderBy = "created_unix DESC"
116+
orderBy = models.SearchOrderByNewest
117117
case "oldest":
118-
orderBy = "created_unix ASC"
118+
orderBy = models.SearchOrderByOldest
119119
case "recentupdate":
120-
orderBy = "updated_unix DESC"
120+
orderBy = models.SearchOrderByRecentUpdated
121121
case "leastupdate":
122-
orderBy = "updated_unix ASC"
122+
orderBy = models.SearchOrderByLeastUpdated
123123
case "reversealphabetically":
124-
orderBy = "name DESC"
124+
orderBy = models.SearchOrderByAlphabeticallyReverse
125125
case "alphabetically":
126-
orderBy = "name ASC"
126+
orderBy = models.SearchOrderByAlphabetically
127127
default:
128128
ctx.Data["SortType"] = "recentupdate"
129-
orderBy = "updated_unix DESC"
129+
orderBy = models.SearchOrderByNewest
130130
}
131131

132132
// set default sort value if sort is empty.
@@ -149,7 +149,7 @@ func Profile(ctx *context.Context) {
149149
case "stars":
150150
ctx.Data["PageIsProfileStarList"] = true
151151
if len(keyword) == 0 {
152-
repos, err = ctxUser.GetStarredRepos(showPrivate, page, setting.UI.User.RepoPagingNum, orderBy)
152+
repos, err = ctxUser.GetStarredRepos(showPrivate, page, setting.UI.User.RepoPagingNum, orderBy.String())
153153
if err != nil {
154154
ctx.Handle(500, "GetStarredRepos", err)
155155
return
@@ -182,7 +182,7 @@ func Profile(ctx *context.Context) {
182182
default:
183183
if len(keyword) == 0 {
184184
var total int
185-
repos, err = models.GetUserRepositories(ctxUser.ID, showPrivate, page, setting.UI.User.RepoPagingNum, orderBy)
185+
repos, err = models.GetUserRepositories(ctxUser.ID, showPrivate, page, setting.UI.User.RepoPagingNum, orderBy.String())
186186
if err != nil {
187187
ctx.Handle(500, "GetRepositories", err)
188188
return

0 commit comments

Comments
 (0)