Class: SalesforceBulkApi::Api

Inherits:
Object
  • Object
show all
Defined in:
lib/salesforce_bulk_api.rb

Constant Summary collapse

@@SALESFORCE_API_VERSION =
'32.0'

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Api

Returns a new instance of Api.



17
18
19
20
# File 'lib/salesforce_bulk_api.rb', line 17

def initialize(client)
  @connection = SalesforceBulkApi::Connection.new(@@SALESFORCE_API_VERSION,client)
  @listeners = { job_created: [] }
end

Instance Method Details

#create(sobject, records, get_response = false, send_nulls = false, batch_size = 10000, timeout = 1500) ⇒ Object



30
31
32
# File 'lib/salesforce_bulk_api.rb', line 30

def create(sobject, records, get_response = false, send_nulls = false, batch_size = 10000, timeout = 1500)
  self.do_operation('insert', sobject, records, nil, get_response, timeout, batch_size, send_nulls)
end

#delete(sobject, records, get_response = false, batch_size = 10000, timeout = 1500) ⇒ Object



34
35
36
# File 'lib/salesforce_bulk_api.rb', line 34

def delete(sobject, records, get_response = false, batch_size = 10000, timeout = 1500)
  self.do_operation('delete', sobject, records, nil, get_response, timeout, batch_size)
end

#do_operation(operation, sobject, records, external_field, get_response, timeout, batch_size, send_nulls = false, no_null_list = []) ⇒ Object

private



57
58
59
60
61
62
63
64
65
66
# File 'lib/salesforce_bulk_api.rb', line 57

def do_operation(operation, sobject, records, external_field, get_response, timeout, batch_size, send_nulls = false, no_null_list = [])
  job = SalesforceBulkApi::Job.new(operation: operation, sobject: sobject, records: records, external_field: external_field, connection: @connection)

  job.create_job(batch_size, send_nulls, no_null_list)
  @listeners[:job_created].each {|callback| callback.call(job)}
  operation == "query" ? job.add_query() : job.add_batches()
  response = job.close_job
  response.merge!({'batches' => job.get_job_result(get_response, timeout)}) if get_response == true
  response
end

#job_from_id(job_id) ⇒ Object



51
52
53
# File 'lib/salesforce_bulk_api.rb', line 51

def job_from_id(job_id)
  SalesforceBulkApi::Job.new(job_id: job_id, connection: @connection)
end

#on_job_created(&block) ⇒ Object

Allows you to attach a listener that accepts the created job (which has a useful #job_id field). This is useful for recording a job ID persistently before you begin batch work (i.e. start modifying the salesforce database), so if the load process you are writing needs to recover, it can be aware of previous jobs it started and wait for them to finish.



47
48
49
# File 'lib/salesforce_bulk_api.rb', line 47

def on_job_created(&block)
  @listeners[:job_created] << block
end

#query(sobject, query, batch_size = 10000, timeout = 1500) ⇒ Object



38
39
40
# File 'lib/salesforce_bulk_api.rb', line 38

def query(sobject, query, batch_size = 10000, timeout = 1500)
  self.do_operation('query', sobject, query, nil, true, timeout, batch_size)
end

#update(sobject, records, get_response = false, send_nulls = false, no_null_list = [], batch_size = 10000, timeout = 1500) ⇒ Object



26
27
28
# File 'lib/salesforce_bulk_api.rb', line 26

def update(sobject, records, get_response = false, send_nulls = false, no_null_list = [], batch_size = 10000, timeout = 1500)
  self.do_operation('update', sobject, records, nil, get_response, timeout, batch_size, send_nulls, no_null_list)
end

#upsert(sobject, records, external_field, get_response = false, send_nulls = false, no_null_list = [], batch_size = 10000, timeout = 1500) ⇒ Object



22
23
24
# File 'lib/salesforce_bulk_api.rb', line 22

def upsert(sobject, records, external_field, get_response = false, send_nulls = false, no_null_list = [], batch_size = 10000, timeout = 1500)
  self.do_operation('upsert', sobject, records, external_field, get_response, timeout, batch_size, send_nulls, no_null_list)
end