Rewrite import feature (#21054)
This commit is contained in:
parent
0ad2413b35
commit
32a030dd74
40 changed files with 2059 additions and 113 deletions
|
@ -1,5 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# NOTE: This is a deprecated worker, only kept to not break ongoing imports
|
||||
# on upgrade. See `Import::RowWorker` for its replacement.
|
||||
|
||||
class Import::RelationshipWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
|
|
33
app/workers/import/row_worker.rb
Normal file
33
app/workers/import/row_worker.rb
Normal file
|
@ -0,0 +1,33 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Import::RowWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
sidekiq_options queue: 'pull', retry: 6, dead: false
|
||||
|
||||
sidekiq_retries_exhausted do |msg, _exception|
|
||||
ActiveRecord::Base.connection_pool.with_connection do
|
||||
# Increment the total number of processed items, and bump the state of the import if needed
|
||||
bulk_import_id = BulkImportRow.where(id: msg['args'][0]).pick(:id)
|
||||
BulkImport.progress!(bulk_import_id) unless bulk_import_id.nil?
|
||||
end
|
||||
end
|
||||
|
||||
def perform(row_id)
|
||||
row = BulkImportRow.eager_load(bulk_import: :account).find_by(id: row_id)
|
||||
return true if row.nil?
|
||||
|
||||
imported = BulkImportRowService.new.call(row)
|
||||
|
||||
mark_as_processed!(row, imported)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def mark_as_processed!(row, imported)
|
||||
bulk_import_id = row.bulk_import_id
|
||||
row.destroy! if imported
|
||||
|
||||
BulkImport.progress!(bulk_import_id, imported: imported)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue