class Querier

Public Class Methods

new(api_key="") click to toggle source
# File lib/td/querier.rb, line 8
def initialize(api_key="")
  @api_key = api_key
end

Public Instance Methods

perform(api_key, job_id, opts) click to toggle source
# File lib/td/querier.rb, line 22
def perform(api_key, job_id, opts)
  begin
    client = TreasureData::Client.new(api_key)
    job = client.job(job_id)
    #reschedule if the job is not finished
    unless job.finished?
      reschedule_time = (opts && opts['reschedule_time'] != nil && opts['reschedule_time'] != '') ? opts['reschedule_time'].to_i : 300
      return Querier.perform_in(reschedule_time, api_key, job_id, opts)
    end
  rescue TreasureData::APIError => e
    puts e.message
    return false
  end

  if opts
    stringified_opts = Hash[opts.map{ |k, v| [k.to_s, v] }]
    klass = stringified_opts['klass']
    meth = stringified_opts['method']
    send_results = stringified_opts['results']
    results = (send_results.to_s == "true" ? job.result : nil)
    eval(klass).send(meth.to_s, results)
  end
end
query(database, query, opts) click to toggle source
# File lib/td/querier.rb, line 12
def query(database, query, opts)
  on_demand_path = (opts && opts['on_demand_path'] != nil && opts['on_demand_path'] != '') ? opts['on_demand_path'] : ''
  priority = (opts && opts['priority'] != nil && opts['priority'] != '') ? opts['priority'] : 1
  reschedule_time = (opts && opts['reschedule_time'] != nil && opts['reschedule_time'] != '') ? opts['reschedule_time'] : 300

  client = TreasureData::Client.new(@api_key)
  job = client.query(database, query, on_demand_path, priority)
  Querier.perform_async(@api_key, job.job_id, opts)
end