mirror of https://github.com/mastodon/mastodon
Send searches to FASP...
...to backfill accounts that might be missing. Sadly, this has no effect on the search performed, but has the potential to improvde future searches.
This commit is contained in:
parent
103475edc1
commit
c83ff20d12
|
@ -152,6 +152,12 @@ class AccountSearchService < BaseService
|
|||
'search.backend' => Chewy.enabled? ? 'elasticsearch' : 'database'
|
||||
)
|
||||
|
||||
# Trigger searching accounts using providers.
|
||||
# This will not return any immediate results but has the
|
||||
# potential to fill the local database with relevant
|
||||
# accounts for the next time the search is performed.
|
||||
Fasp::AccountSearchWorker.perform_async(@query)
|
||||
|
||||
search_service_results.compact.uniq.tap do |results|
|
||||
span.set_attribute('search.results.count', results.size)
|
||||
end
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Fasp::AccountSearchWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
sidekiq_options queue: 'fasp', retry: 0
|
||||
|
||||
def perform(query)
|
||||
return unless Mastodon::Feature.fasp_enabled?
|
||||
|
||||
account_search_providers = Fasp::Provider.with_capability('account_search')
|
||||
return if account_search_providers.none?
|
||||
|
||||
params = { term: query, limit: 10 }.to_query
|
||||
fetch_service = ActivityPub::FetchRemoteActorService.new
|
||||
|
||||
account_search_providers.each do |provider|
|
||||
Fasp::Request.new(provider).get("/account_search/v0/search?#{params}").each do |uri|
|
||||
next if Account.where(uri:).any?
|
||||
|
||||
fetch_service.call(uri)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue