class ElasticRecord::Relation

Constants

MULTI_VALUE_METHODS
SINGLE_VALUE_METHODS

Attributes

klass[R]
values[R]

Public Class Methods

new(klass, values: {}) click to toggle source
# File lib/elastic_record/relation.rb, line 17
def initialize(klass, values: {})
  @klass = klass
  @values = values
end

Public Instance Methods

==(other) click to toggle source
# File lib/elastic_record/relation.rb, line 66
def ==(other)
  to_a == other
end
aggregations() click to toggle source
# File lib/elastic_record/relation.rb, line 38
def aggregations
  @aggregations ||= begin
    results = search_results['aggregations']
    ElasticRecord::AggregationResponse::Builder.extract(results)
  end
end
becomes(klass) click to toggle source
# File lib/elastic_record/relation.rb, line 27
def becomes(klass)
  became = klass.allocate
  became.instance_variable_set(:@klass, @klass)
  became.instance_variable_set(:@values, @values.dup)
  became
end
count() click to toggle source
# File lib/elastic_record/relation.rb, line 34
def count
  search_hits.total
end
delete_all() click to toggle source
# File lib/elastic_record/relation.rb, line 61
def delete_all
  find_ids_in_batches { |ids| klass.delete(ids) }
  klass.elastic_index.delete_by_query(as_elastic)
end
explain(id) click to toggle source
# File lib/elastic_record/relation.rb, line 45
def explain(id)
  klass.elastic_index.explain(id, as_elastic)
end
find_hits(search_hits) click to toggle source
# File lib/elastic_record/relation.rb, line 53
def find_hits(search_hits)
  if klass.elastic_index.load_from_source
    search_hits.hits.map { |hit| klass.from_search_hit(hit) }
  else
    klass.find search_hits.to_ids
  end
end
initialize_copy(other) click to toggle source
# File lib/elastic_record/relation.rb, line 22
def initialize_copy(other)
  @values = @values.dup
  reset
end
inspect() click to toggle source
# File lib/elastic_record/relation.rb, line 70
def inspect
  to_a.inspect
end
scoping() { || ... } click to toggle source
# File lib/elastic_record/relation.rb, line 74
def scoping
  previous, klass.current_elastic_search = klass.current_elastic_search, self
  yield
ensure
  klass.current_elastic_search = previous
end
to_a() click to toggle source
# File lib/elastic_record/relation.rb, line 49
def to_a
  @records ||= find_hits(search_hits)
end

Private Instance Methods

reset() click to toggle source
# File lib/elastic_record/relation.rb, line 83
def reset
  @search_results = @records = nil
end