class Daedal::Filters::GeoDistanceRangeFilter

Constants

POSSIBLE_COMPARE_OPTIONS

Public Class Methods

new(options={}) click to toggle source
Calls superclass method
# File lib/daedal/filters/geo_distance_range_filter.rb, line 18
def initialize(options={})
  super options
  validate_compare_options(options)
end

Public Instance Methods

to_hash() click to toggle source
# File lib/daedal/filters/geo_distance_range_filter.rb, line 23
def to_hash
  {
    geo_distance_range: {
      field =>  {
        lat: lat,
        lon: lon
      }
    }.merge(compare_options)
  }
end

Private Instance Methods

compare_options() click to toggle source
# File lib/daedal/filters/geo_distance_range_filter.rb, line 36
def compare_options
  POSSIBLE_COMPARE_OPTIONS.each_with_object({}) do |compare_option, compare_options|
    compare_options[compare_option] = decorate_distance(attributes[compare_option]) if attributes[compare_option]
  end
end
decorate_distance(distance) click to toggle source
# File lib/daedal/filters/geo_distance_range_filter.rb, line 42
def decorate_distance(distance)
  "#{distance}#{unit}"
end
validate_compare_options(options) click to toggle source
# File lib/daedal/filters/geo_distance_range_filter.rb, line 46
def validate_compare_options(options)
  if options.values_at(*POSSIBLE_COMPARE_OPTIONS).compact.empty?
    raise 'Must give at least one of gte, gt, lt, or lte'
  end
  raise 'gte & gt are not valid together' if gte && gt
  raise 'gte & gt are not valid together' if lte && lt
end