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