26 lines
830 B
Ruby
26 lines
830 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class SearchabilityUpdateService < BaseService
|
||
|
def call(account)
|
||
|
statuses = account.statuses.unset_searchability
|
||
|
|
||
|
return unless statuses.exists?
|
||
|
|
||
|
ids = statuses.pluck(:id)
|
||
|
|
||
|
if account.public_searchability?
|
||
|
statuses.update_all('searchability = CASE visibility WHEN 0 THEN 0 WHEN 1 THEN 2 WHEN 2 THEN 2 ELSE 3 END, updated_at = CURRENT_TIMESTAMP')
|
||
|
elsif account.private_searchability?
|
||
|
statuses.update_all('searchability = CASE WHEN visibility IN (0, 1, 2) THEN 2 ELSE 3 END, updated_at = CURRENT_TIMESTAMP')
|
||
|
else
|
||
|
statuses.update_all('searchability = 3, updated_at = CURRENT_TIMESTAMP')
|
||
|
end
|
||
|
|
||
|
return unless Chewy.enabled?
|
||
|
|
||
|
ids.each_slice(100) do |chunk_ids|
|
||
|
StatusesIndex.import chunk_ids, update_fields: [:searchability]
|
||
|
end
|
||
|
end
|
||
|
end
|