module ElasticRecord::AsDocument

Public Instance Methods

as_partial_update_document(mapping_properties = elastic_index.mapping[:properties]) click to toggle source
# File lib/elastic_record/as_document.rb, line 13
def as_partial_update_document(mapping_properties = elastic_index.mapping[:properties])
  changed_fields = respond_to?(:saved_changes) ? saved_changes.keys : changed

  changed_fields.each_with_object({}) do |field, result|
    if field_mapping = mapping_properties[field]
      result[field] = value_for_elastic_search(field, field_mapping, mapping_properties, partial: true)
    end
  end
end
as_search_document(mapping_properties = elastic_index.mapping[:properties]) click to toggle source
# File lib/elastic_record/as_document.rb, line 3
def as_search_document(mapping_properties = elastic_index.mapping[:properties])
  mapping_properties.each_with_object({}) do |(field, mapping), result|
    value = value_for_elastic_search field, mapping, mapping_properties

    unless value.nil?
      result[field] = value
    end
  end
end
value_for_elastic_search_object(object, nested_mapping, partial: false) click to toggle source
# File lib/elastic_record/as_document.rb, line 42
def value_for_elastic_search_object(object, nested_mapping, partial: false)
  method = partial ? :as_partial_update_document : :as_search_document
  object.respond_to?(method) ? object.public_send(method, nested_mapping) : object
end
value_for_elastic_search_range(range) click to toggle source
# File lib/elastic_record/as_document.rb, line 47
def value_for_elastic_search_range(range)
  gte = range.begin unless range.begin == -Float::INFINITY
  lte = range.end unless range.end == Float::INFINITY

  {'gte' => gte, 'lte' => lte}
end