Sha256: c60678e104408bd545ac9468c399cf0c6b3a7eb5f5376e7f7e7a81d7edd21fad
Contents?: true
Size: 1023 Bytes
Versions: 8
Compression:
Stored size: 1023 Bytes
Contents
# frozen_string_literal: true module Spotlight ## # Process a CSV upload into new Spotlight::Resource::Upload objects class AddUploadsFromCSV < ActiveJob::Base queue_as :default after_perform do |job| csv_data, exhibit, user = job.arguments Spotlight::IndexingCompleteMailer.documents_indexed(csv_data, exhibit, user).deliver_now end def perform(csv_data, exhibit, _user) encoded_csv(csv_data).each do |row| url = row.delete('url') next unless url.present? resource = Spotlight::Resources::Upload.new( data: row, exhibit: exhibit ) resource.build_upload(remote_image_url: url) unless url == '~' resource.save_and_index end end private def encoded_csv(csv) csv.map do |row| row.map do |label, column| [label, column.encode('UTF-8', invalid: :replace, undef: :replace, replace: "\uFFFD")] if column.present? end.compact.to_h end.compact end end end
Version data entries
8 entries across 8 versions & 1 rubygems