datacite/lupo

View on GitHub
app/jobs/transfer_job.rb

Summary

Maintainability
A
25 mins
Test Coverage
# frozen_string_literal: true

class TransferJob < ApplicationJob
  queue_as :lupo_transfer

  # retry_on ActiveRecord::RecordNotFound, wait: 10.seconds, attempts: 3
  # retry_on Faraday::TimeoutError, wait: 10.minutes, attempts: 3

  # discard_on ActiveJob::DeserializationError

  def perform(doi_id, options = {})
    doi = Doi.where(doi: doi_id).first

    if doi.present? && options[:client_target_id].present?
      __elasticsearch__.index_document if doi.update(datacentre: options[:client_target_id]) == true

      Rails.logger.info "[Transfer] Transferred DOI #{doi.doi}."
    elsif doi.present?
      Rails.logger.error "[Transfer] Error transferring DOI " + doi_id +
        ": no target client"
    else
      Rails.logger.error "[Transfer] Error transferring DOI " + doi_id +
        ": not found"
    end
  end
end