class Parse::Query
Attributes
keys[R]
parse_class_name[RW]
parse_client[RW]
where[R]
Public Class Methods
new(parse_class_name=nil, parse_client=nil)
click to toggle source
# File lib/parse/query.rb, line 6 def initialize parse_class_name=nil, parse_client=nil @parse_class_name = parse_class_name.to_s @parse_client = parse_client || Parse::Client.default @limit = nil @skip = nil @count = false @where = [] # array of Conditions @order = [] @include = [] @keys = [] end
Public Instance Methods
count(val=nil)
click to toggle source
# File lib/parse/query.rb, line 50 def count val=nil if val @count = val else @count end self end
include(*vals)
click to toggle source
# File lib/parse/query.rb, line 92 def include *vals return @include if vals.empty? @include += vals end
inspect()
click to toggle source
# File lib/parse/query.rb, line 115 def inspect "#{@parse_class_name}, #{to_params}" end
limit(val=nil)
click to toggle source
# File lib/parse/query.rb, line 32 def limit val=nil if val @limit = val else @limit end self end
order(*vals)
click to toggle source
# File lib/parse/query.rb, line 73 def order *vals return @order if vals.empty? @order += vals self end
Also aliased as: order_asc
order_desc(*vals)
click to toggle source
# File lib/parse/query.rb, line 80 def order_desc *vals order *(vals.map do |val| val[0] == '-' ? val[1..-1] : "-#{val}" end) end
run(&block)
click to toggle source
# File lib/parse/query.rb, line 18 def run &block block = proc do |body| # TODO: should handle error results = body['results'] results.query_count = body['count'] if results results end unless block endpoint = %w(User).include?(@parse_class_name) \ ? "#{@parse_class_name.lowercase}s" : "classes/#{@parse_class_name}" @parse_client.call_api :get, "#{endpoint}?#{to_params}", nil, &block end
Also aliased as: invoke
skip(val=nil)
click to toggle source
# File lib/parse/query.rb, line 41 def skip val=nil if val @skip = val else @skip end self end
to_params()
click to toggle source
# File lib/parse/query.rb, line 97 def to_params params = [] where = @where.join ',' order = @order.join ',' keys = @keys.join ',' include = @include.join ',' params.push "where=#{URI.encode "{#{where}}"}" unless where.empty? params.push "order=#{URI.encode order}" unless order.empty? params.push "keys=#{URI.encode keys}" unless keys.empty? params.push "include=#{URI.encode include}" unless include.empty? params.push "skip=#{URI.encode @skip.to_s}" if @skip params.push "limit=#{URI.encode @limit.to_s}" if @limit params.push "count=1" if @count params.join '&' end
Private Instance Methods
column(name)
click to toggle source
# File lib/parse/query.rb, line 121 def column name Condition.new(self, name).tap do |condition| @where.push condition end end
Also aliased as: _
or_condition(*conds)
click to toggle source
# File lib/parse/query.rb, line 132 def or_condition *conds conds.each do |cond| @where.delete cond end OrCondition.new(conds).tap do |condition| @where.push condition end end
Also aliased as: _or_
subquery_for(parse_class_name)
click to toggle source
# File lib/parse/query.rb, line 128 def subquery_for parse_class_name Subquery.new parse_class_name end