require "csv"

class Countries::ImportJob < ApplicationJob
  queue_as :default

  def perform(blob_signed_id)
    blob = ActiveStorage::Blob.find_signed(blob_signed_id)

    blob.download do |data|
      encoded_data = data.force_encoding("ASCII-8BIT").encode("UTF-8", invalid: :replace, undef: :replace, replace: "?")
      CSV.parse(encoded_data, headers: true) do |row|
        Countries::CreateRecordJob.perform_later(
          name: row["Country"],
          flag_url: row["Flag URL"]
        )
      end
    end
  ensure
    blob.purge_later
  end
end