class Parse::Query::Condition
Public Class Methods
new(query, column_name)
click to toggle source
# File lib/parse/query.rb, line 174 def initialize query, column_name @query = query @column_name = column_name @conditions = [] end
Public Instance Methods
between(*range)
click to toggle source
# File lib/parse/query.rb, line 206 def between *range if range.size == 1 && range.first.is_a?(Range) range = range.first elsif range.size == 2 range = range[0]..range[1] else raise ArgumentErrr end if range.exclude_end? self.gt(range.begin).lt(range.end) else self.gte(range.begin).lte(range.end) end end
exists(val=true)
click to toggle source
# File lib/parse/query.rb, line 222 def exists val=true @conditions.push ['$exists', val] self end
max_distance_in_kilometers(kilometers)
click to toggle source
# File lib/parse/query.rb, line 273 def max_distance_in_kilometers kilometers @conditions.push ['$maxDistanceInKilometers', kilometers] self end
max_distance_in_miles(miles)
click to toggle source
# File lib/parse/query.rb, line 268 def max_distance_in_miles miles @conditions.push ['$maxDistanceInMiles', miles] self end
max_distance_in_radians(radians)
click to toggle source
# File lib/parse/query.rb, line 278 def max_distance_in_radians radians @conditions.push ['$maxDistanceInRadians', radians] self end
near_sphere(geo_point)
click to toggle source
conditions for GeoPoints
# File lib/parse/query.rb, line 263 def near_sphere geo_point @conditions.push ['$nearSphere', geo_point] self end
or(cond)
click to toggle source
# File lib/parse/query.rb, line 252 def or cond # quite dirty!! @query.where.delete self @query.where.delete cond or_cond = Condition.new @query, '$or' or_cond.eq [self, cond] @query.where.push or_cond end
regex(regex)
click to toggle source
# File lib/parse/query.rb, line 288 def regex regex @conditions.push ['$regex', regex.source] self end
starts_with(str)
click to toggle source
parse.com/questions/are-like-or-regex-queries-possible-via-the-rest-api
# File lib/parse/query.rb, line 294 def starts_with str regex %r|^\Q#{str}\E| end
to_s()
click to toggle source
# File lib/parse/query.rb, line 298 def to_s if @conditions.size == 1 && !@conditions[0].is_a?(Array) "#{@column_name.to_s.inspect}:#{condition_to_s @conditions[0]}" elsif @conditions.size == 1 && @conditions[0][0].to_s[0] != '$' # $or "#{@column_name.to_s.inspect}:#{condition_to_s @conditions[0]}" else "#{@column_name.to_s.inspect}:{#{@conditions.map{|c| condition_to_s c}.join ','}}" end end
within(southwest_geo_point, northeast_geo_point)
click to toggle source
# File lib/parse/query.rb, line 283 def within southwest_geo_point, northeast_geo_point @conditions.push WithinCondition.new(southwest_geo_point, northeast_geo_point) self end
Private Instance Methods
condition_to_s(condition)
click to toggle source
# File lib/parse/query.rb, line 325 def condition_to_s condition case condition when Array if condition[0].to_s[0] == '$' "#{condition[0].inspect}:#{condition_value_to_s condition[1]}" else # $or "[#{condition.map{|c| "{#{condition_value_to_s c}}"}.join ','}]" end else condition_value_to_s condition end end
condition_value_to_s(val)
click to toggle source
# File lib/parse/query.rb, line 311 def condition_value_to_s val case val when Parse::Object %Q|{"__type":"Pointer","className":"#{val.parse_class_name}","objectId":"#{val.parse_object_id}"}| when Parse::GeoPoint val.to_json when Parse::ParseDate val.to_json else val.inspect #val.to_json end end