module Elasticsearch::Persistence::QueryMethods

Constants

MULTI_VALUE_METHODS
SINGLE_VALUE_METHODS

Public Instance Methods

aggregation(name, options = {}, &block) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 210
def aggregation(name, options = {}, &block)
  spawn.aggregation!(name, options, &block)
end
aggregation!(name, options = {}, &block) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 214
def aggregation!(name, options = {}, &block)
  self.aggregation_values += [{name: name, args: options}]
  self
end
bind(value) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 254
def bind(value)
  spawn.bind!(value)
end
build_where(opts, other = []) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 263
def build_where(opts, other = [])
  case opts
  when String, Array
    #TODO: Remove duplication with: /activerecord/lib/active_record/sanitization.rb:113
    values = Hash === other.first ? other.first.values : other

    values.grep(Elasticsearch::Persistence::Relation) do |rel|
      self.bind_values += rel.bind_values
    end

    [other.empty? ? opts : ([opts] + other)]
  when Hash
    [other.empty? ? opts : ([opts] + other)]
  else
    [opts]
  end
end
extending(*modules, &block) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 303
def extending(*modules, &block)
  if modules.any? || block
    spawn.extending!(*modules, &block)
  else
    self
  end
end
field(*args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 222
def field(*args)
  spawn.field!(*args)
end
Also aliased as: fields
field!(*args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 227
def field!(*args)
  self.field_values += args
  self
end
fields(*args)
Alias for: field
filter(name, options = {}, &block) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 198
def filter(name, options = {}, &block)
  spawn.filter!(name, options, &block)
end
filter!(name, options = {}, &block) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 202
def filter!(name, options = {}, &block)
  self.filter_values += [{name: name, args: options}]
  self
end
has_field?(field) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 247
def has_field?(field)
  spawn.filter(:exists, {field: field})
end
highlight(*args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 281
def highlight(*args)
  spawn.highlight!(*args)
end
highlight!(*args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 285
def highlight!(*args)
  self.highlight_values += args
  self
end
limit(args)
Alias for: size
must(opts = :chain, *rest)
Alias for: where
must_not(opts = :chain, *rest) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 143
def must_not(opts = :chain, *rest)
  if opts == :chain
    WhereChain.new(spawn)
  elsif opts.blank?
    self
  else
    spawn.must_not!(opts, *rest)
  end
end
Also aliased as: where_not
must_not!(opts, *rest) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 155
def must_not!(opts, *rest)
  if opts == :chain
    WhereChain.new(self)
  else
    self.must_not_values += build_where(opts, rest)
    self
  end
end
none() click to toggle source

Returns a chainable relation with zero records.

# File lib/elasticsearch/persistence/relation/query_methods.rb, line 294
def none
  extending(NullRelation)
end
or_filter(name, options = {}, &block) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 187
def or_filter(name, options = {}, &block)
  spawn.or_filter!(name, options, &block)
end
or_filter!(name, options = {}, &block) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 191
def or_filter!(name, options = {}, &block)
  self.or_filter_values += [{name: name, args: options}]
  self
end
order(*args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 54
def order(*args)
  check_if_method_has_arguments!(:order, args)
  spawn.order!(*args)
end
Also aliased as: sort, sort
order!(*args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 59
def order!(*args)
  self.order_values += [preprocess_order_args(args)]
  self
end
query_string(opts = :chain, *rest) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 121
def query_string(opts = :chain, *rest)
  if opts == :chain
    WhereChain.new(spawn)
  elsif opts.blank?
    self
  else
    spawn.query_string!(opts, *rest)
  end
end
should(opts = :chain, *rest) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 167
def should(opts = :chain, *rest)
  if opts == :chain
    WhereChain.new(spawn)
  elsif opts.blank?
    self
  else
    spawn.should!(opts, *rest)
  end
end
should!(opts, *rest) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 177
def should!(opts, *rest)
  if opts == :chain
    WhereChain.new(self)
  else
    self.should_values += build_where(opts, rest)
    self
  end
end
size(args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 79
def size(args)
  spawn.size!(args)
end
Also aliased as: limit
size!(args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 83
def size!(args)
  self.size_value = args
  self
end
skip_callbacks(*args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 67
def skip_callbacks(*args)
  spawn.skip_callbacks!(*args)
end
skip_callbacks!(*args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 71
def skip_callbacks!(*args)
  self.skip_callbacks_values += args
  self
end
sort(*args)
Alias for: order
source(*args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 235
def source(*args)
  spawn.source!(*args)
end
source!(*args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 239
def source!(*args)
  self.source_values += args
  self
end
where(opts = :chain, *rest) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 93
def where(opts = :chain, *rest)
  if opts == :chain
    WhereChain.new(spawn)
  elsif opts.blank?
    self
  else
    spawn.where!(opts, *rest)
  end
end
Also aliased as: must
where_not(opts = :chain, *rest)
Alias for: must_not

Private Instance Methods

add_relations_to_bind_values(attributes) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 348
def add_relations_to_bind_values(attributes)
  if attributes.is_a?(Hash)
    attributes.each_value do |value|
      if value.is_a?(ActiveRecord::Relation)
        self.bind_values += value.bind_values
      else
        add_relations_to_bind_values(value)
      end
    end
  end
end
check_if_method_has_arguments!(method_name, args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 323
def check_if_method_has_arguments!(method_name, args)
  if args.blank?
    raise ArgumentError, "The method .#{method_name}() must contain arguments."
  end
end
preprocess_order_args(order_args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 342
def preprocess_order_args(order_args)
  args = order_args.reject{ |arg| arg.is_a?(Hash) }.take(2)
  return [Hash[[args]]] if args.length == 2
  order_args.select { |arg| arg.is_a?(Hash)}.flatten
end
validate_order_args(args) click to toggle source
# File lib/elasticsearch/persistence/relation/query_methods.rb, line 332
def validate_order_args(args)
  args.each do |arg|
    next unless arg.is_a?(Hash)
    arg.each do |_key, value|
      raise ArgumentError, "Direction \"#{value}\" is invalid. Valid " \
                           "directions are: #{VALID_DIRECTIONS.inspect}" unless VALID_DIRECTIONS.include?(value)
    end
  end
end