|
|
|
@ -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) |
|
|
|
|
} |
|
|
|
|