Optimize account search (#2421)
This commit is contained in:
parent
17c591ffba
commit
d2159deaf2
|
@ -15,12 +15,12 @@ class AccountSearchService < BaseService
|
||||||
private
|
private
|
||||||
|
|
||||||
def search_service_results
|
def search_service_results
|
||||||
return [] if query_blank_or_hashtag?
|
return [] if query_blank_or_hashtag? || limit < 1
|
||||||
|
|
||||||
if resolving_non_matching_remote_account?
|
if resolving_non_matching_remote_account?
|
||||||
[FollowRemoteAccountService.new.call("#{query_username}@#{query_domain}")]
|
[FollowRemoteAccountService.new.call("#{query_username}@#{query_domain}")]
|
||||||
else
|
else
|
||||||
search_results_and_exact_match.compact.uniq
|
search_results_and_exact_match.compact.uniq.slice(0, limit)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -29,7 +29,9 @@ class AccountSearchService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def search_results_and_exact_match
|
def search_results_and_exact_match
|
||||||
[exact_match] + search_results.to_a
|
exact = [exact_match]
|
||||||
|
return exact if !exact[0].nil? && limit == 1
|
||||||
|
exact + search_results.to_a
|
||||||
end
|
end
|
||||||
|
|
||||||
def query_blank_or_hashtag?
|
def query_blank_or_hashtag?
|
||||||
|
|
|
@ -11,6 +11,12 @@ describe AccountSearchService do
|
||||||
it 'returns empty array for hashtag query' do
|
it 'returns empty array for hashtag query' do
|
||||||
results = subject.call('#tag', 10)
|
results = subject.call('#tag', 10)
|
||||||
|
|
||||||
|
expect(results).to eq []
|
||||||
|
end
|
||||||
|
it 'returns empty array for limit zero' do
|
||||||
|
Fabricate(:account, username: 'match')
|
||||||
|
results = subject.call('match', 0)
|
||||||
|
|
||||||
expect(results).to eq []
|
expect(results).to eq []
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Reference in a new issue