Class: Remi::Loader::Salesforce

Inherits:
Remi::Loader show all
Includes:
DataSubject::Salesforce
Defined in:
lib/remi/data_subjects/salesforce.rb

Overview

Salesforce loader

Examples:

class MyJob < Remi::Job
  target :contacts do
    encoder Remi::Encoder::Salesforce.new
    loader Remi::Loader::Salesforce.new(
      credentials: { },
      object: :Contact,
      api: :bulk,
      operation: :update
    )
  end
end

job = MyJob.new
job.contacts.df = Daru::DataFrame.new({ :Id => ['0031600002Pm7'], :Student_ID__c => ['test1111']})
job.contacts.load

Instance Attribute Summary

Attributes inherited from Remi::Loader

#logger

Instance Method Summary collapse

Methods included from DataSubject::Salesforce

#restforce_client

Constructor Details

#initialize(*args, **kargs, &block) ⇒ Salesforce

Returns a new instance of Salesforce.

Parameters:

  • credentials (Hash)

    Used to authenticate with salesforce

  • object (Symbol)

    Salesforce object to extract

  • operation (Symbol)

    Salesforce operation to perform (:update, :create, :upsert)

  • batch_size (Integer)

    Size of batch to use for updates (1-10000)

  • external_id (Symbol, String)

    Field to use as an external id for upsert operations

  • api (Symbol)

    Salesforce API to use (only option supported is :bulk)



175
176
177
178
# File 'lib/remi/data_subjects/salesforce.rb', line 175

def initialize(*args, **kargs, &block)
  super
  init_salesforce_loader(*args, **kargs, &block)
end

Instance Method Details

#load(data) ⇒ true

Returns On success.

Parameters:

  • data (Encoder::Salesforce)

    Data that has been encoded appropriately to be loaded into the target

Returns:

  • (true)

    On success



182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/remi/data_subjects/salesforce.rb', line 182

def load(data)
  logger.info "Performing Salesforce #{@operation} on object #{@sfo}"

  if @operation == :update
    Remi::SfBulkHelper::SfBulkUpdate.update(restforce_client, @sfo, data, batch_size: @batch_size, logger: logger)
  elsif @operation == :create
    Remi::SfBulkHelper::SfBulkCreate.create(restforce_client, @sfo, data, batch_size: @batch_size, logger: logger)
  elsif @operation == :upsert
    Remi::SfBulkHelper::SfBulkUpsert.upsert(restforce_client, @sfo, data, batch_size: @batch_size, external_id: @external_id, logger: logger)
  else
    raise ArgumentError, "Unknown operation: #{@operation}"
  end

  true
end