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 = []) ⇒ Object



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

def perform(bridge_base_url, bridge_api_key, bridge_api_secret, models, chain = [])
  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)
end