class Elasticsearch::Persistence::Relation

Constants

INVALID_METHODS_FOR_DELETE_ALL
MULTI_VALUE_METHODS
SINGLE_VALUE_METHODS
VALUE_METHODS

Attributes

klass[R]
loaded[R]
loaded?[R]
model[R]

Public Class Methods

new(klass, values={}) click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 20
def initialize(klass, values={})
    @klass  = klass
    @values = values
    @offsets = {}
    @loaded = false
end

Public Instance Methods

as_json(options = nil) click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 37
def as_json(options = nil)
  to_a.as_json(options)
end
build(*args) click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 27
def build(*args)
 @klass.new *args
end
create(*args, &block) click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 45
def create(*args, &block)
   scoping { @klass.create!(*args, &block) }
end
delete(opts=nil) click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 63
def delete(opts=nil)
end
exec_queries() click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 66
def exec_queries
  # Run safety callback
  klass.circuit_breaker_callbacks.each do |cb|
    current_scope_values = self.send("#{cb[:options][:in]}_values")
    next if skip_callbacks_values.include? cb[:name]
    valid = if cb[:callback].nil?
      current_scope_values.collect(&:keys).flatten.include? cb[:name]
    else
      cb[:callback].call(current_scope_values.collect(&:keys).flatten, current_scope_values)
    end

    raise Elasticsearch::Persistence::Model::QueryOptionMissing, "#{cb[:name]} #{cb[:options][:message]}" unless valid
  end

  @records = @klass.fetch_results(query_builder)

  @loaded = true
  @records
end
fetch()
Alias for: load
inspect() click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 90
def inspect
  entries = to_a.results.take([size_value.to_i + 1, 11].compact.min).map!(&:inspect)
  message = {}
  message = {total: to_a.total, max: to_a.total}
  message.merge!(aggregations: results.aggregations.keys) unless results.aggregations.nil?
  message = message.each_pair.collect { |k,v|  "#{k}: #{v}" }
  message.unshift entries.join(', ') unless entries.size.zero?
  "#<#{self.class.name} #{message.join(', ')}>"
end
load() click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 56
def load
  exec_queries unless loaded?

  self
end
Also aliased as: fetch
results()
Alias for: to_a
scoping() { || ... } click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 49
def scoping
  previous, klass.current_scope = klass.current_scope, self
  yield
ensure
  klass.current_scope = previous
end
to_a() click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 31
def to_a
  load
  @records
end
Also aliased as: results
to_elastic() click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 41
def to_elastic
  query_builder.to_elastic
end
values() click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 86
def values
  Hash[@values]
end

Private Instance Methods

query_builder() click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 104
def query_builder
  QueryBuilder.new(values)
end