Class: Remi::DataTarget::Salesforce
- Inherits:
-
Object
- Object
- Remi::DataTarget::Salesforce
- Includes:
- Remi::DataTarget
- Defined in:
- lib/remi/data_target/salesforce.rb
Instance Method Summary collapse
- #df_as_array_of_hashes ⇒ Object
- #field_symbolizer ⇒ Object
-
#initialize(object:, operation:, credentials:, external_id: 'Id', api: :bulk, logger: Remi::Settings.logger) ⇒ Salesforce
constructor
A new instance of Salesforce.
- #load ⇒ Object
- #restforce_client ⇒ Object
Methods included from Remi::DataSubject
Constructor Details
#initialize(object:, operation:, credentials:, external_id: 'Id', api: :bulk, logger: Remi::Settings.logger) ⇒ Salesforce
Returns a new instance of Salesforce.
6 7 8 9 10 11 12 13 |
# File 'lib/remi/data_target/salesforce.rb', line 6 def initialize(object:, operation:, credentials:, external_id: 'Id', api: :bulk, logger: Remi::Settings.logger) @sfo = object @operation = operation @external_id = external_id @credentials = credentials @api = api @logger = logger end |
Instance Method Details
#df_as_array_of_hashes ⇒ Object
48 49 50 |
# File 'lib/remi/data_target/salesforce.rb', line 48 def df_as_array_of_hashes df.to_a[0] end |
#field_symbolizer ⇒ Object
15 16 17 |
# File 'lib/remi/data_target/salesforce.rb', line 15 def field_symbolizer Remi::FieldSymbolizers[:salesforce] end |
#load ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/remi/data_target/salesforce.rb', line 19 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) elsif @operation == :upsert Remi::SfBulkHelper::SfBulkUpsert.upsert(restforce_client, @sfo, df_as_array_of_hashes, external_id: @external_id, logger: @logger) else raise "Unknown operation: #{@operation}" end @loaded = true end |
#restforce_client ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/remi/data_target/salesforce.rb', line 37 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 |