Class: Remi::DataTarget::Salesforce

Inherits:
Object
  • Object
show all
Includes:
Remi::DataTarget
Defined in:
lib/remi/data_target/csv_file.rb,
lib/remi/data_target/salesforce.rb

Instance Method Summary collapse

Methods included from Remi::DataSubject

#df, #df=, #fields

Constructor Details

#initialize(object:, operation:, credentials:, api: :bulk, logger: Remi::Settings.logger) ⇒ Salesforce

Returns a new instance of Salesforce.



6
7
8
9
10
11
12
# File 'lib/remi/data_target/csv_file.rb', line 6

def initialize(object:, operation:, credentials:, api: :bulk, logger: Remi::Settings.logger)
  @sfo = object
  @operation = operation
  @credentials = credentials
  @api = api
  @logger = logger
end

Instance Method Details

#df_as_array_of_hashesObject



43
44
45
# File 'lib/remi/data_target/csv_file.rb', line 43

def df_as_array_of_hashes
  df.to_a[0]
end

#field_symbolizerObject



14
15
16
# File 'lib/remi/data_target/csv_file.rb', line 14

def field_symbolizer
  Remi::FieldSymbolizers[:salesforce]
end

#loadObject



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/remi/data_target/csv_file.rb', line 18

def load
  return true if @loaded || df.size == 0

  @logger.info "Performing Salesforce #{@operation} on object #{@sfo}"

  if @operation == :update
    Remi::SfBulkHelper::SfBulkUpdate.update(restforce_client, @sfo, df_as_array_of_hashes, logger: @logger)
  elsif @operation == :create
    Remi::SfBulkHelper::SfBulkCreate.create(restforce_client, @sfo, df_as_array_of_hashes, logger: @logger)
  end

  @loaded = true
end

#restforce_clientObject



32
33
34
35
36
37
38
39
40
41
# File 'lib/remi/data_target/csv_file.rb', line 32

def restforce_client
  @restforce_client ||= begin
    client = Restforce.new(@credentials)

    #run a dummy query to initiate a connection. Workaround for Bulk API problem
    # https://github.com/yatish27/salesforce_bulk_api/issues/33
    client.query('SELECT Id FROM Contact LIMIT 1')
    client
  end
end