|
|
|
@ -97,14 +97,14 @@ type SearchRepoOptions struct {
|
|
|
|
|
// Owner in we search search
|
|
|
|
|
//
|
|
|
|
|
// in: query
|
|
|
|
|
OwnerID int64 `json:"uid"`
|
|
|
|
|
Searcher *User `json:"-"` //ID of the person who's seeking
|
|
|
|
|
OrderBy string `json:"-"`
|
|
|
|
|
Private bool `json:"-"` // Include private repositories in results
|
|
|
|
|
Collaborate bool `json:"-"` // Include collaborative repositories
|
|
|
|
|
Starred bool `json:"-"`
|
|
|
|
|
Page int `json:"-"`
|
|
|
|
|
IsProfile bool `json:"-"`
|
|
|
|
|
OwnerID int64 `json:"uid"`
|
|
|
|
|
Searcher *User `json:"-"` //ID of the person who's seeking
|
|
|
|
|
OrderBy SearchOrderBy `json:"-"`
|
|
|
|
|
Private bool `json:"-"` // Include private repositories in results
|
|
|
|
|
Collaborate bool `json:"-"` // Include collaborative repositories
|
|
|
|
|
Starred bool `json:"-"`
|
|
|
|
|
Page int `json:"-"`
|
|
|
|
|
IsProfile bool `json:"-"`
|
|
|
|
|
// Limit of result
|
|
|
|
|
//
|
|
|
|
|
// maximum: setting.ExplorePagingNum
|
|
|
|
@ -112,6 +112,25 @@ type SearchRepoOptions struct {
|
|
|
|
|
PageSize int `json:"limit"` // Can be smaller than or equal to setting.ExplorePagingNum
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//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 = "name DESC"
|
|
|
|
|
SearchOrderByLeastUpdated = "updated_unix ASC"
|
|
|
|
|
SearchOrderByRecentUpdated = "updated_unix DESC"
|
|
|
|
|
SearchOrderByOldest = "created_unix ASC"
|
|
|
|
|
SearchOrderByNewest = "created_unix DESC"
|
|
|
|
|
SearchOrderBySize = "size ASC"
|
|
|
|
|
SearchOrderBySizeReverse = "size DESC"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// SearchRepositoryByName takes keyword and part of repository name to search,
|
|
|
|
|
// it returns results in given range and number of total results.
|
|
|
|
|
func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, count int64, err error) {
|
|
|
|
@ -164,7 +183,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, coun
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(opts.OrderBy) == 0 {
|
|
|
|
|
opts.OrderBy = "name ASC"
|
|
|
|
|
opts.OrderBy = SearchOrderByAlphabetically
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sess := x.NewSession()
|
|
|
|
@ -193,7 +212,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, coun
|
|
|
|
|
if err = sess.
|
|
|
|
|
Where(cond).
|
|
|
|
|
Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
|
|
|
|
|
OrderBy(opts.OrderBy).
|
|
|
|
|
OrderBy(opts.OrderBy.String()).
|
|
|
|
|
Find(&repos); err != nil {
|
|
|
|
|
return nil, 0, fmt.Errorf("Repo: %v", err)
|
|
|
|
|
}
|
|
|
|
@ -217,7 +236,7 @@ func Repositories(opts *SearchRepoOptions) (_ RepositoryList, count int64, err e
|
|
|
|
|
|
|
|
|
|
if err = x.
|
|
|
|
|
Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
|
|
|
|
|
OrderBy(opts.OrderBy).
|
|
|
|
|
OrderBy(opts.OrderBy.String()).
|
|
|
|
|
Find(&repos); err != nil {
|
|
|
|
|
return nil, 0, fmt.Errorf("Repo: %v", err)
|
|
|
|
|
}
|
|
|
|
@ -236,7 +255,7 @@ func GetRecentUpdatedRepositories(opts *SearchRepoOptions) (repos RepositoryList
|
|
|
|
|
var cond = builder.NewCond()
|
|
|
|
|
|
|
|
|
|
if len(opts.OrderBy) == 0 {
|
|
|
|
|
opts.OrderBy = "updated_unix DESC"
|
|
|
|
|
opts.OrderBy = SearchOrderByRecentUpdated
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !opts.Private {
|
|
|
|
@ -270,7 +289,7 @@ func GetRecentUpdatedRepositories(opts *SearchRepoOptions) (repos RepositoryList
|
|
|
|
|
if err = x.Where(cond).
|
|
|
|
|
Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).
|
|
|
|
|
Limit(opts.PageSize).
|
|
|
|
|
OrderBy(opts.OrderBy).
|
|
|
|
|
OrderBy(opts.OrderBy.String()).
|
|
|
|
|
Find(&repos); err != nil {
|
|
|
|
|
return nil, 0, fmt.Errorf("Repo: %v", err)
|
|
|
|
|
}
|
|
|
|
|