Commit 3853d438a11e45225060ddd48b76eec66fc52d0e
1 parent
dc86dddc
Exists in
master
and in
21 other branches
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 = | ... | ... |