Skip to content

Commit 36dd37e

Browse files
Merge pull request #75 from datacite/create-crossref-doi-import-task
Create crossref doi import task
2 parents 17ecaba + 22d540b commit 36dd37e

3 files changed

Lines changed: 31 additions & 1 deletion

File tree

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ group :development, :test do
4343
gem "bundler-audit", require: false
4444
gem "brakeman", require: false
4545
gem "rspec-rails", "~> 7.0.0"
46+
gem "parallel", "~> 1.27"
4647
end
4748

4849
group :test do

Gemfile.lock

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ GEM
222222
bigdecimal (>= 3.0)
223223
ostruct (>= 0.2)
224224
ostruct (0.6.1)
225-
parallel (1.26.3)
225+
parallel (1.27.0)
226226
parser (3.3.7.1)
227227
ast (~> 2.4.1)
228228
racc
@@ -406,6 +406,7 @@ DEPENDENCIES
406406
logstash-logger (~> 0.26.1)
407407
mysql2 (~> 0.5.3)
408408
oj (~> 3.16, >= 3.16.11)
409+
parallel (~> 1.27)
409410
rack-cors
410411
rails (~> 7.1.3, >= 7.1.3.2)
411412
rspec-rails (~> 7.0.0)

lib/tasks/event.rake

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# frozen_string_literal: true
2+
3+
namespace :event do
4+
desc "Import Crossref DOIs for events created within a date range"
5+
# example command: IMPORT_DATE=2025-06-11 bundle exec rake event:import_crossref_event_dois
6+
task import_crossref_event_dois: :environment do
7+
date = Date.parse(ENV["IMPORT_DATE"])
8+
start_date = date.beginning_of_day
9+
end_date = (date + 1).beginning_of_day
10+
11+
puts("Import date: #{date}")
12+
puts("Start date: #{start_date}")
13+
puts("End date: #{end_date}")
14+
15+
events = Event
16+
.where(source_id: ["crossref", "datacite-crossref"])
17+
.where(created_at: start_date...end_date)
18+
19+
puts("Number of events: #{events.count}")
20+
21+
Parallel.each(events, in_threads: 20) do |event|
22+
SqsUtilities.send_events_other_doi_job_message({
23+
subj_id: event.subj_id,
24+
obj_id: event.obj_id,
25+
})
26+
end
27+
end
28+
end

0 commit comments

Comments
 (0)