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
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
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
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
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