Sha256: aec2518104530b6313dbdd4288dae96cc7c462c4131fb203c636c76f885ff42f

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

# -*- coding: utf-8 -*-
# This writer uses sidekiq to enqueue index jobs
# @author Michael Stämpfli and John Bradley

require 'sidekiq'

module XapianDb
  module IndexWriters
    class SidekiqWriter

      SidekiqWorker.class_eval do
        include Sidekiq::Worker

        sidekiq_options set_max_expansion: set_max_expansion
      end

      class << self

        # Update an object in the index
        # @param [Object] obj An instance of a class with a blueprint configuration

        def queue
          XapianDb::Config.sidekiq_queue
        end

        def index(obj, _commit= true, changed_attrs: [])
          Sidekiq::Client.enqueue_to(queue, worker_class, 'index',
                                     {
                                       class: obj.class.name,
                                       id: obj.id,
                                       changed_attrs: changed_attrs
                                     }.to_json)
        end

        # Remove an object from the index
        # @param [String] xapian_id The document id
        def delete_doc_with(xapian_id, _commit= true)
          Sidekiq::Client.enqueue_to(queue, worker_class, 'delete_doc', { xapian_id: xapian_id }.to_json)
        end

        # Reindex all objects of a given class
        # @param [Class] klass The class to reindex
        def reindex_class(klass, _options = {})
          Sidekiq::Client.enqueue_to(queue, worker_class, 'reindex_class', { class: klass.name }.to_json)
        end

        def set_max_expansion
          XapianDb::Config.set_max_expansion
        end

        def worker_class
          SidekiqWorker
        end
        private :worker_class
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
xapian_db-1.3.12 lib/xapian_db/index_writers/sidekiq_writer.rb