summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorBo-Yi Wu <appleboy.tw@gmail.com>2018-10-18 11:14:28 +0800
committertechknowlogick <hello@techknowlogick.com>2018-10-17 23:14:28 -0400
commit486e989a3979684ba428a129492881de12ec923a (patch)
treec3c1c992195be1c36f2726301aca8d408e52e4cf /models
parente79e9248fd9d539ecc912fcc24e7a669ce98bdaf (diff)
downloadgitea-486e989a3979684ba428a129492881de12ec923a.tar.gz
gitea-486e989a3979684ba428a129492881de12ec923a.zip
feat(topic): search keyword by splitting provided values by , (#4939)
Diffstat (limited to 'models')
-rw-r--r--models/repo_list.go13
-rw-r--r--models/repo_list_test.go3
2 files changed, 11 insertions, 5 deletions
diff --git a/models/repo_list.go b/models/repo_list.go
index c7e292d8a9..4368057e04 100644
--- a/models/repo_list.go
+++ b/models/repo_list.go
@@ -205,11 +205,14 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (RepositoryList, int64, err
if opts.Keyword != "" {
var keywordCond = builder.NewCond()
- if opts.TopicOnly {
- keywordCond = keywordCond.Or(builder.Like{"topic.name", strings.ToLower(opts.Keyword)})
- } else {
- keywordCond = keywordCond.Or(builder.Like{"lower_name", strings.ToLower(opts.Keyword)})
- keywordCond = keywordCond.Or(builder.Like{"topic.name", strings.ToLower(opts.Keyword)})
+ // separate keyword
+ for _, v := range strings.Split(opts.Keyword, ",") {
+ if opts.TopicOnly {
+ keywordCond = keywordCond.Or(builder.Like{"topic.name", strings.ToLower(v)})
+ } else {
+ keywordCond = keywordCond.Or(builder.Like{"lower_name", strings.ToLower(v)})
+ keywordCond = keywordCond.Or(builder.Like{"topic.name", strings.ToLower(v)})
+ }
}
cond = cond.And(keywordCond)
}
diff --git a/models/repo_list_test.go b/models/repo_list_test.go
index 8f4947dbb2..2f9a149188 100644
--- a/models/repo_list_test.go
+++ b/models/repo_list_test.go
@@ -237,6 +237,9 @@ func TestSearchRepositoryByTopicName(t *testing.T) {
{name: "AllPublic/OnlySearchPublicRepositoriesFromTopic",
opts: &SearchRepoOptions{OwnerID: 21, AllPublic: true, Keyword: "graphql", TopicOnly: true},
count: 1},
+ {name: "AllPublic/OnlySearchMultipleKeywordPublicRepositoriesFromTopic",
+ opts: &SearchRepoOptions{OwnerID: 21, AllPublic: true, Keyword: "graphql,golang", TopicOnly: true},
+ count: 3},
}
for _, testCase := range testCases {