Sha256: b1d647ddd0f13ee8d16ca67d3796284392b526d82935531b9068e5ab02476485

Contents?: true

Size: 742 Bytes

Versions: 15

Compression:

Stored size: 742 Bytes

Contents

module Workarea
  class BulkIndexAdmin
    include Sidekiq::Worker

    sidekiq_options lock: :until_executing

    class << self
      def perform(klass, ids)
        ids.each_slice(100) do |group|
          perform_by_models(klass.constantize.in(id: group).to_a)
        end
      end

      def perform_by_models(models)
        return if models.empty?
        Workarea::Search::Admin.bulk { documents_for(models) }
      end

      private

      def documents_for(models)
        models
          .map { |m| Workarea::Search::Admin.for(m) }
          .compact
          .select(&:should_be_indexed?)
          .map(&:as_bulk_document)
      end
    end

    def perform(klass, ids)
      self.class.perform(klass, ids)
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
workarea-core-3.4.45 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.44 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.43 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.42 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.41 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.40 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.39 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.38 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.37 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.36 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.35 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.34 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.33 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.32 app/workers/workarea/bulk_index_admin.rb
workarea-core-3.4.31 app/workers/workarea/bulk_index_admin.rb