mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	feat(topic): search keyword by splitting provided values by , (#4939)
This commit is contained in:
		@@ -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)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user