Co-authored-by: Eugen Rochko <eugen@zeonfederated.com> Co-authored-by: Claire <claire.github-309c@sitedethib.com>
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
class Importer::PublicStatusesIndexImporter < Importer::BaseImporter
 | 
						|
  def import!
 | 
						|
    indexable_statuses_scope.find_in_batches(batch_size: @batch_size) do |batch|
 | 
						|
      in_work_unit(batch.map(&:status_id)) do |status_ids|
 | 
						|
        bulk = ActiveRecord::Base.connection_pool.with_connection do
 | 
						|
          Chewy::Index::Import::BulkBuilder.new(index, to_index: Status.includes(:media_attachments, :preloadable_poll).where(id: status_ids)).bulk_body
 | 
						|
        end
 | 
						|
 | 
						|
        indexed = 0
 | 
						|
        deleted = 0
 | 
						|
 | 
						|
        bulk.map! do |entry|
 | 
						|
          if entry[:index]
 | 
						|
            indexed += 1
 | 
						|
          else
 | 
						|
            deleted += 1
 | 
						|
          end
 | 
						|
          entry
 | 
						|
        end
 | 
						|
 | 
						|
        Chewy::Index::Import::BulkRequest.new(index).perform(bulk)
 | 
						|
 | 
						|
        [indexed, deleted]
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    wait!
 | 
						|
  end
 | 
						|
 | 
						|
  private
 | 
						|
 | 
						|
  def index
 | 
						|
    PublicStatusesIndex
 | 
						|
  end
 | 
						|
 | 
						|
  def indexable_statuses_scope
 | 
						|
    Status.indexable.select('"statuses"."id", COALESCE("statuses"."reblog_of_id", "statuses"."id") AS status_id')
 | 
						|
  end
 | 
						|
end
 |