Class: Bulkrax::ImporterJob

Inherits:
ApplicationJob show all
Defined in:
app/jobs/bulkrax/importer_job.rb

Instance Method Summary collapse

Instance Method Details

#import(importer, only_updates_since_last_import) ⇒ Object



19
20
21
22
23
24
# File 'app/jobs/bulkrax/importer_job.rb', line 19

def import(importer, only_updates_since_last_import)
  importer.only_updates = only_updates_since_last_import || false
  return unless importer.valid_import?

  importer.import_objects
end

#perform(importer_id, only_updates_since_last_import = false) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'app/jobs/bulkrax/importer_job.rb', line 7

def perform(importer_id, only_updates_since_last_import = false)
  importer = Importer.find(importer_id)

  importer.current_run
  unzip_imported_file(importer.parser)
  import(importer, only_updates_since_last_import)
  update_current_run_counters(importer)
  schedule(importer) if importer.schedulable?
rescue ::CSV::MalformedCSVError => e
  importer.set_status_info(e)
end

#schedule(importer) ⇒ Object



39
40
41
# File 'app/jobs/bulkrax/importer_job.rb', line 39

def schedule(importer)
  ImporterJob.set(wait_until: importer.next_import_at).perform_later(importer.id, true)
end

#unzip_imported_file(parser) ⇒ Object



26
27
28
29
30
# File 'app/jobs/bulkrax/importer_job.rb', line 26

def unzip_imported_file(parser)
  return unless parser.file? && parser.zip?

  parser.unzip(parser.parser_fields['import_file_path'])
end

#update_current_run_counters(importer) ⇒ Object



32
33
34
35
36
37
# File 'app/jobs/bulkrax/importer_job.rb', line 32

def update_current_run_counters(importer)
  importer.current_run.total_work_entries = importer.limit || importer.parser.works_total
  importer.current_run.total_collection_entries = importer.parser.collections_total
  importer.current_run.total_file_set_entries = importer.parser.file_sets_total
  importer.current_run.save!
end