diff --git a/Gemfile b/Gemfile index 6347972..7a5708f 100644 --- a/Gemfile +++ b/Gemfile @@ -43,6 +43,7 @@ group :development, :test do gem "bundler-audit", require: false gem "brakeman", require: false gem "rspec-rails", "~> 7.0.0" + gem "parallel", "~> 1.27" end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index f902f72..3effb52 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -222,7 +222,7 @@ GEM bigdecimal (>= 3.0) ostruct (>= 0.2) ostruct (0.6.1) - parallel (1.26.3) + parallel (1.27.0) parser (3.3.7.1) ast (~> 2.4.1) racc @@ -406,6 +406,7 @@ DEPENDENCIES logstash-logger (~> 0.26.1) mysql2 (~> 0.5.3) oj (~> 3.16, >= 3.16.11) + parallel (~> 1.27) rack-cors rails (~> 7.1.3, >= 7.1.3.2) rspec-rails (~> 7.0.0) diff --git a/lib/tasks/event.rake b/lib/tasks/event.rake new file mode 100644 index 0000000..65aca0b --- /dev/null +++ b/lib/tasks/event.rake @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +namespace :event do + desc "Import Crossref DOIs for events created within a date range" + # example command: IMPORT_DATE=2025-06-11 bundle exec rake event:import_crossref_event_dois + task import_crossref_event_dois: :environment do + date = Date.parse(ENV["IMPORT_DATE"]) + start_date = date.beginning_of_day + end_date = (date + 1).beginning_of_day + + puts("Import date: #{date}") + puts("Start date: #{start_date}") + puts("End date: #{end_date}") + + events = Event + .where(source_id: ["crossref", "datacite-crossref"]) + .where(created_at: start_date...end_date) + + puts("Number of events: #{events.count}") + + Parallel.each(events, in_threads: 20) do |event| + SqsUtilities.send_events_other_doi_job_message({ + subj_id: event.subj_id, + obj_id: event.obj_id, + }) + end + end +end