Commit 3853d438a11e45225060ddd48b76eec66fc52d0e

Authored by Andrew Kane
1 parent dc86dddc

Do not mutate options

Showing 1 changed file with 19 additions and 20 deletions   Show diff stats
lib/searchkick/search.rb
... ... @@ -224,30 +224,29 @@ module Searchkick
224 224 end
225 225  
226 226 if value.is_a?(Hash)
227   - if value[:near]
228   - filters << {
229   - geo_distance: {
230   - field => value.delete(:near).map(&:to_f).reverse,
231   - distance: value.delete(:within) || "50mi"
  227 + value.each do |op, op_value|
  228 + case op
  229 + when :within, :bottom_right
  230 + # do nothing
  231 + when :near
  232 + filters << {
  233 + geo_distance: {
  234 + field => op_value.map(&:to_f).reverse,
  235 + distance: value[:within] || "50mi"
  236 + }
232 237 }
233   - }
234   - end
235   -
236   - if value[:top_left]
237   - filters << {
238   - geo_bounding_box: {
239   - field => {
240   - top_left: value.delete(:top_left).map(&:to_f).reverse,
241   - bottom_right: value.delete(:bottom_right).map(&:to_f).reverse
  238 + when :top_left
  239 + filters << {
  240 + geo_bounding_box: {
  241 + field => {
  242 + top_left: op_value.map(&:to_f).reverse,
  243 + bottom_right: value[:bottom_right].map(&:to_f).reverse
  244 + }
242 245 }
243 246 }
244   - }
245   - end
246   -
247   - value.each do |op, op_value|
248   - if op == :not # not equal
  247 + when :not # not equal
249 248 filters << {not: term_filters.call(field, op_value)}
250   - elsif op == :all
  249 + when :all
251 250 filters << {terms: {field => op_value, execution: "and"}}
252 251 else
253 252 range_query =
... ...