Skip to content

Instantly share code, notes, and snippets.

@kevindavis
Created February 27, 2015 18:38
Show Gist options
  • Save kevindavis/03b61acb06b6ecd5ace3 to your computer and use it in GitHub Desktop.
Save kevindavis/03b61acb06b6ecd5ace3 to your computer and use it in GitHub Desktop.
require 'parse-ruby-client'
require 'date'
Parse.init application_id: ENV['PARSE_APP_ID'],
api_key: ENV['PARSE_API_KEY'],
master_key: ENV['PARSE_MASTER_KEY'],
quiet: true
def get_class(classname)
get_class_in_range(classname, Date.parse('2014-01-01'), Date.today + 1)
end
def get_class_in_range(classname, from_date, to_date)
data = []
total = Parse::Query.new(classname).tap do |q|
q.limit=0
q.greater_eq('createdAt', Parse::Date.new(from_date))
q.less_eq('createdAt', Parse::Date.new(to_date))
q.count
end.get['count']
iterations = ((total / 1000).to_i) + 1
first_run = true
objectId = nil
iterations.times do |i|
results = Parse::Query.new(classname).tap do |q|
q.greater_eq('createdAt', Parse::Date.new(from_date))
q.less_eq('createdAt', Parse::Date.new(to_date))
q.order_by = "objectId"
q.order = :descending
q.limit = 1000
if (!first_run)
q.less_than("objectId", objectId)
end
end.get
objectId = results.last['objectId'] if results.last
first_run = false
data += results
end
data
# from the good old days when we had < 10000 rows
# i=0
# while data.size < total do
# results = Parse::Query.new(classname).tap do |q|
# q.limit = 1000
# q.skip = i * 1000
# end.get
# data += results
# i += 1
# end
# data
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment