Class: FileImportProcessorJob
- Inherits:
-
ApplicationJob
- Object
- ApplicationJob
- FileImportProcessorJob
- Defined in:
- app/jobs/file_import_processor_job.rb
Instance Method Summary collapse
- #perform(file_import) ⇒ Object
-
#run_csv_importer(importer, file_import) ⇒ Object
All logic are from csv_importer gem.
- #run_custom_importer(importer, file_import) ⇒ Object
Instance Method Details
#perform(file_import) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 |
# File 'app/jobs/file_import_processor_job.rb', line 4 def perform(file_import) model = CmAdmin::Model.find_by({name: file_import.associated_model_name}) content = file_import.import_file.download importer = model.importer.class_name.classify.constantize.new(content: content) case model.importer.importer_type.to_s when 'csv_importer' run_csv_importer(importer, file_import) when 'custom_importer' run_custom_importer(importer, file_import) end end |
#run_csv_importer(importer, file_import) ⇒ Object
All logic are from csv_importer gem
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'app/jobs/file_import_processor_job.rb', line 17 def run_csv_importer(importer, file_import) if importer.valid_header? importer.run! if importer.report.success? file_import.update(status: :success, completed_at: DateTime.now) else identifier = importer.config.identifiers.first invalid_items_array = importer.report.invalid_rows.map { |row| [row.line_number, row.model.send(identifier), row.errors] } file_import.update(status: :failed, completed_at: DateTime.now, invalid_row_items: invalid_items_array) end else file_import.update(status: :failed, completed_at: DateTime.now, invalid_row_items: [[1, 'invalid_header', {invalid_header: importer.report.}]]) end end |
#run_custom_importer(importer, file_import) ⇒ Object
32 33 34 35 36 37 |
# File 'app/jobs/file_import_processor_job.rb', line 32 def run_custom_importer(importer, file_import) importer.run! invalid_items_array = importer.invalid_rows.map { |row| [row.line_number, row.identifier, row.errors] } status = importer.invalid_rows.empty? ? :success : :failed file_import.update(status: status, completed_at: DateTime.now, invalid_row_items: invalid_items_array) end |