class ElasticArSync::Elastic::Services::DocumentIndexer

Public Instance Methods

index_document(klass, operation, record_id) click to toggle source
# File lib/elastic_ar_sync/elastic/services/document_indexer.rb, line 2
def index_document(klass, operation, record_id)
  case operation.to_s
  when /index/
    record = Object.const_get(klass).find(record_id)

    Elasticsearch::Model.client.index(
      index: record.__elasticsearch__.index_name,
      type: record.__elasticsearch__.document_type,
      id: record.id,
      body: record.__elasticsearch__.as_indexed_json)
  when /delete/
    Elasticsearch::Model.client.delete(index: Object.const_get(klass).__elasticsearch__.index_name,
                          type: Object.const_get(klass).__elasticsearch__.document_type,
                          id: record_id)
  else
    raise ArgumentError, "Unknown operation '#{operation.to_s}'"
  end
end