Class: BridgeCache::Jobs::ImportData

Inherits:
ActiveJob::Base
  • Object
show all
Includes:
Utils::WorkerHelper
Defined in:
app/lib/bridge_cache/jobs/import_data.rb

Instance Method Summary collapse

Methods included from Utils::WorkerHelper

invoke_next

Instance Method Details

#perform(bridge_base_url, bridge_api_key, bridge_api_secret, models, chain = [], global_options = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/lib/bridge_cache/jobs/import_data.rb', line 6

def perform(bridge_base_url, bridge_api_key, bridge_api_secret, models, chain = [], global_options = {})
  begin
    remote_data = BridgeBlueprint::RemoteData.new(bridge_base_url, bridge_api_key, bridge_api_secret)
    Dir.mktmpdir do |dir|
      path = "#{dir}/data_dump"
      remote_data.store_file(path)
      import = BridgeBlueprint::DataDump.new(path)
      models.each do |model|
        row_ids = []

        import.each_row(model.pluralize) do |row|
          BridgeCache::Jobs::ImportRow.set(queue: self.queue_name).perform_later(model, row.to_h)
          row_ids << row['id'].to_i
        end

        BridgeCache::Jobs::CleanupJob.set(queue: self.queue_name).perform_later(model, row_ids)
      end
    end
    BridgeCache::Utils::WorkerHelper.invoke_next(chain)
  rescue => e
    Rails.logger.debug(e)
  end
end