diff --git a/app/jobs/update_doi_job.rb b/app/jobs/update_doi_job.rb new file mode 100644 index 000000000..34185887a --- /dev/null +++ b/app/jobs/update_doi_job.rb @@ -0,0 +1,15 @@ +class UpdateDoiJob < ActiveJob::Base + queue_as :lupo_background + + def perform(doi_id, options={}) + doi = Doi.where(doi: doi_id).first + + if doi.blank? + Rails.logger.error "[UpdateDoi] Error updating DOI " + doi_id + ": not found" + elsif doi.update_attributes(version: doi.version.to_i + 1) + Rails.logger.debug "[UpdateDoi] Successfully updated DOI " + doi_id + else + Rails.logger.error "[UpdateDoi] Error updating DOI " + doi_id + ": " + doi.errors.messages.inspect + end + end +end diff --git a/lib/tasks/doi.rake b/lib/tasks/doi.rake index 6e40a44d2..6a48d5538 100644 --- a/lib/tasks/doi.rake +++ b/lib/tasks/doi.rake @@ -101,6 +101,18 @@ namespace :doi do Doi.loop_through_dois(options) end + desc "Set registration agency" + task set_registration_agency: :environment do + options = { + from_id: (ENV["FROM_ID"] || Doi.minimum(:id)).to_i, + until_id: (ENV["UNTIL_ID"] || Doi.maximum(:id)).to_i, + query: "agency:DataCite OR agency:Crossref", + label: "[SetRegistrationAgency]", + job_name: "UpdateDoiJob", + } + Doi.loop_through_dois(options) + end + desc 'Convert affiliations to new format' task :convert_affiliations => :environment do from_id = (ENV['FROM_ID'] || Doi.minimum(:id)).to_i