module Elos::QueryBuilder::Filters

Public Instance Methods

and_filter(*filters) click to toggle source
# File lib/elos/query_builder/filters.rb, line 10
def and_filter(*filters)
  filters = filters.first if filters.first.is_a?(Array)
  filters.compact!
  { and: filters } unless filters.empty?
end
exists_filter(key) click to toggle source
# File lib/elos/query_builder/filters.rb, line 26
def exists_filter(key)
  { exists: { field: key } }
end
missing_filter(key) click to toggle source
# File lib/elos/query_builder/filters.rb, line 30
def missing_filter(key)
  { missing: { field: key } }
end
or_filter(*filters) click to toggle source
# File lib/elos/query_builder/filters.rb, line 4
def or_filter(*filters)
  filters = filters.first if filters.first.is_a?(Array)
  filters.compact!
  { or: filters } unless filters.empty?
end
range_filter(key, min: nil, max: nil) click to toggle source
# File lib/elos/query_builder/filters.rb, line 34
def range_filter(key, min: nil, max: nil)
  return unless min || max
  r = { range: { key => {} } }
  r[:range][key][:gte] = min if min
  r[:range][key][:lte] = max if max
  r
end
term_filter(key, params_sym = nil, value: nil) click to toggle source
# File lib/elos/query_builder/filters.rb, line 16
def term_filter(key, params_sym = nil, value: nil)
  v = value.nil? ? params[params_sym || key] : value
  { term: { key => v } } unless v.nil?
end
terms_filter(key, params_sym = nil, values: nil) click to toggle source
# File lib/elos/query_builder/filters.rb, line 21
def terms_filter(key, params_sym = nil, values: nil)
  v = value.nil? ? params[params_sym || key.to_s.pluralize.to_sym] : value
  { terms: { key => v } } unless v.empty?
end