class Seiun::Client

Public Class Methods

new(databasedotcom: nil, batch_size: 10_000) click to toggle source
# File lib/seiun/client.rb, line 3
def initialize(databasedotcom: nil, batch_size: 10_000)
  @batch_size = batch_size
  @connection = Seiun::Connection.new(databasedotcom)
end

Public Instance Methods

delete(table_name, records, callback_class: nil, async: true) click to toggle source
# File lib/seiun/client.rb, line 42
def delete(table_name, records, callback_class: nil, async: true)
  operate(:delete, table_name, records: records, callback: callback_class, async: async)
end
delete_queue(table_name, callback_class: nil, async: true) click to toggle source
# File lib/seiun/client.rb, line 46
def delete_queue(table_name, callback_class: nil, async: true)
  @delete_queue ||= {}
  @delete_queue[table_name] ||= Seiun::Queue.new(batch_size: @batch_size) do |records|
    delete(table_name, records, callback_class: callback_class, async: async)
  end
end
find_job(id, callback_class: nil) click to toggle source
# File lib/seiun/client.rb, line 57
def find_job(id, callback_class: nil)
  callback_class = wrap_callback(callback_class)
  Seiun::Job.new(@connection, id: id, callback: callback_class)
end
insert(table_name, records, callback_class: nil, async: true) click to toggle source
# File lib/seiun/client.rb, line 8
def insert(table_name, records, callback_class: nil, async: true)
  operate(:insert, table_name, records: records, callback: callback_class, async: async)
end
insert_queue(table_name, callback_class: nil, async: true) click to toggle source
# File lib/seiun/client.rb, line 12
def insert_queue(table_name, callback_class: nil, async: true)
  @insert_queue ||= {}
  @insert_queue[table_name] ||= Seiun::Queue.new(batch_size: @batch_size) do |records|
    insert(table_name, records, callback_class: callback_class, async: async)
  end
end
query(table_name, soql, callback_class: nil) click to toggle source
# File lib/seiun/client.rb, line 53
def query(table_name, soql, callback_class: nil)
  operate(:query, table_name, soql: soql, callback: callback_class)      
end
update(table_name, records, callback_class: nil, async: true) click to toggle source
# File lib/seiun/client.rb, line 19
def update(table_name, records, callback_class: nil, async: true)
  operate(:update, table_name, records: records, callback: callback_class, async: async)
end
update_queue(table_name, callback_class: nil, async: true) click to toggle source
# File lib/seiun/client.rb, line 23
def update_queue(table_name, callback_class: nil, async: true)
  @update_queue ||= {}
  @update_queue[table_name] ||= Seiun::Queue.new(batch_size: @batch_size) do |records|
    update(table_name, records, callback_class: callback_class, async: async)
  end
end
upsert(table_name, records, ext_field_name, callback_class: nil, async: true) click to toggle source
# File lib/seiun/client.rb, line 30
def upsert(table_name, records, ext_field_name, callback_class: nil, async: true)
  operate(:upsert, table_name, records: records,
    ext_field_name: ext_field_name, callback: callback_class, async: async)
end
upsert_queue(table_name, ext_field_name, callback_class: nil, async: true) click to toggle source
# File lib/seiun/client.rb, line 35
def upsert_queue(table_name, ext_field_name, callback_class: nil, async: true)
  @upsert_queue ||= {}
  @upsert_queue[table_name] ||= Seiun::Queue.new(batch_size: @batch_size) do |records|
    upsert(table_name, records, ext_field_name, callback_class: callback_class, async: async)
  end
end

Private Instance Methods

operate(operation, object, records: [], soql: "", ext_field_name: nil, callback: nil, async: true) click to toggle source
# File lib/seiun/client.rb, line 64
def operate(operation, object, records: [], soql: "", ext_field_name: nil, callback: nil, async: true)
  return if operation != :query && records.empty?
  callback = wrap_callback(callback)
  records = records.map{|r| Seiun::Callback::RecordWrapper.new(r) }
  job = Seiun::Job.new(@connection, operation: operation, object_name: object, ext_field_name: ext_field_name, callback: callback)
  job.post_creation
  operation == :query ? job.add_query(soql) : records.each_slice(@batch_size).each{|chunk| job.add_batch(chunk) }
  job.post_closing
  job.wait_finish if async == false
  operation == :query ? job.get_results : job
end
wrap_callback(callback) click to toggle source
# File lib/seiun/client.rb, line 76
def wrap_callback(callback)
  Seiun::Callback::Wrapper.new(callback) if callback
end