summaryrefslogtreecommitdiffstats
path: root/models/repo_list.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/repo_list.go')
-rw-r--r--models/repo_list.go16
1 files changed, 14 insertions, 2 deletions
diff --git a/models/repo_list.go b/models/repo_list.go
index ee4266d4e6..692d4d002f 100644
--- a/models/repo_list.go
+++ b/models/repo_list.go
@@ -136,6 +136,8 @@ type SearchRepoOptions struct {
Mirror util.OptionalBool
// only search topic name
TopicOnly bool
+ // include description in keyword search
+ IncludeDescription bool
}
//SearchOrderBy is used to sort the result
@@ -163,9 +165,9 @@ const (
SearchOrderByForksReverse SearchOrderBy = "num_forks DESC"
)
-// SearchRepositoryByName takes keyword and part of repository name to search,
+// SearchRepository returns repositories based on search options,
// it returns results in given range and number of total results.
-func SearchRepositoryByName(opts *SearchRepoOptions) (RepositoryList, int64, error) {
+func SearchRepository(opts *SearchRepoOptions) (RepositoryList, int64, error) {
if opts.Page <= 0 {
opts.Page = 1
}
@@ -264,6 +266,9 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (RepositoryList, int64, err
var likes = builder.NewCond()
for _, v := range strings.Split(opts.Keyword, ",") {
likes = likes.Or(builder.Like{"lower_name", strings.ToLower(v)})
+ if opts.IncludeDescription {
+ likes = likes.Or(builder.Like{"LOWER(description)", strings.ToLower(v)})
+ }
}
keywordCond = keywordCond.Or(likes)
}
@@ -311,6 +316,13 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (RepositoryList, int64, err
return repos, count, nil
}
+// 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) (RepositoryList, int64, error) {
+ opts.IncludeDescription = false
+ return SearchRepository(opts)
+}
+
// FindUserAccessibleRepoIDs find all accessible repositories' ID by user's id
func FindUserAccessibleRepoIDs(userID int64) ([]int64, error) {
var accessCond builder.Cond = builder.Eq{"is_private": false}