blacklight-spotlight 3.0.0.rc3 → 3.0.0.rc4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spotlight/admin/reindex_monitor.js +1 -0
- data/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +23 -0
- data/app/controllers/spotlight/catalog_controller.rb +4 -1
- data/app/controllers/spotlight/dashboards_controller.rb +1 -1
- data/app/controllers/spotlight/exhibits_controller.rb +1 -1
- data/app/helpers/spotlight/application_helper.rb +19 -0
- data/app/helpers/spotlight/pages_helper.rb +1 -1
- data/app/jobs/concerns/spotlight/job_tracking.rb +47 -0
- data/app/jobs/concerns/spotlight/limit_concurrency.rb +33 -0
- data/app/jobs/spotlight/add_uploads_from_csv.rb +6 -3
- data/app/jobs/spotlight/application_job.rb +8 -0
- data/app/jobs/spotlight/cleanup_job_trackers_job.rb +13 -0
- data/app/jobs/spotlight/default_thumbnail_job.rb +1 -3
- data/app/jobs/spotlight/reindex_exhibit_job.rb +36 -0
- data/app/jobs/spotlight/reindex_job.rb +49 -41
- data/app/jobs/spotlight/rename_sidecar_field_job.rb +2 -2
- data/app/jobs/spotlight/update_job_trackers_job.rb +20 -0
- data/app/models/concerns/spotlight/user.rb +2 -1
- data/app/models/spotlight/event.rb +13 -0
- data/app/models/spotlight/exhibit.rb +4 -14
- data/app/models/spotlight/job_tracker.rb +105 -0
- data/app/models/spotlight/reindex_progress.rb +44 -27
- data/app/models/spotlight/resource.rb +24 -58
- data/app/models/spotlight/resources/iiif_harvester.rb +10 -1
- data/app/models/spotlight/resources/iiif_manifest.rb +3 -1
- data/app/models/spotlight/resources/iiif_service.rb +1 -1
- data/app/models/spotlight/resources/json_upload.rb +12 -0
- data/app/models/spotlight/resources/upload.rb +25 -2
- data/app/models/spotlight/solr_document_sidecar.rb +2 -1
- data/app/services/spotlight/etl.rb +7 -0
- data/app/services/spotlight/etl/context.rb +52 -0
- data/app/services/spotlight/etl/executor.rb +194 -0
- data/app/services/spotlight/etl/loaders.rb +12 -0
- data/app/services/spotlight/etl/pipeline.rb +81 -0
- data/app/services/spotlight/etl/solr_loader.rb +96 -0
- data/app/services/spotlight/etl/sources.rb +25 -0
- data/app/services/spotlight/etl/step.rb +82 -0
- data/app/services/spotlight/etl/transforms.rb +64 -0
- data/app/services/spotlight/validity_checker.rb +5 -5
- data/app/views/spotlight/dashboards/_reindexing_activity.html.erb +6 -6
- data/app/views/spotlight/shared/_locale_picker.html.erb +1 -1
- data/app/views/spotlight/sir_trevor/blocks/_browse_group_categories_block.html.erb +4 -3
- data/config/locales/spotlight.ar.yml +11 -1
- data/config/locales/spotlight.en.yml +3 -2
- data/db/migrate/20210122082032_create_job_trackers.rb +22 -0
- data/db/migrate/20210126123041_create_events.rb +15 -0
- data/lib/generators/spotlight/scaffold_resource_generator.rb +5 -13
- data/lib/spotlight/engine.rb +8 -1
- data/lib/spotlight/version.rb +1 -1
- data/spec/controllers/spotlight/catalog_controller_spec.rb +3 -1
- data/spec/examples.txt +1448 -1437
- data/spec/factories/job_trackers.rb +9 -0
- data/spec/features/add_items_spec.rb +9 -4
- data/spec/features/javascript/reindex_monitor_spec.rb +1 -1
- data/spec/features/site_users_management_spec.rb +4 -4
- data/spec/helpers/spotlight/pages_helper_spec.rb +8 -0
- data/spec/jobs/spotlight/reindex_exhibit_job_spec.rb +43 -0
- data/spec/jobs/spotlight/reindex_job_spec.rb +30 -59
- data/spec/models/spotlight/exhibit_spec.rb +3 -57
- data/spec/models/spotlight/reindex_progress_spec.rb +89 -87
- data/spec/models/spotlight/resource_spec.rb +69 -90
- data/spec/models/spotlight/resources/iiif_harvester_spec.rb +9 -10
- data/spec/models/spotlight/solr_document_sidecar_spec.rb +1 -0
- data/spec/services/spotlight/etl/context_spec.rb +66 -0
- data/spec/services/spotlight/etl/executor_spec.rb +149 -0
- data/spec/services/spotlight/etl/pipeline_spec.rb +22 -0
- data/spec/services/spotlight/etl/solr_loader_spec.rb +76 -0
- data/spec/services/spotlight/etl/step_spec.rb +70 -0
- data/spec/spec_helper.rb +2 -5
- data/spec/views/spotlight/dashboards/_reindexing_activity.html.erb_spec.rb +22 -19
- metadata +55 -15
- data/app/models/concerns/spotlight/resources/open_graph.rb +0 -36
- data/app/models/spotlight/reindexing_log_entry.rb +0 -42
- data/app/services/spotlight/resources/iiif_builder.rb +0 -19
- data/app/services/spotlight/solr_document_builder.rb +0 -77
- data/app/services/spotlight/upload_solr_document_builder.rb +0 -57
- data/spec/factories/reindexing_log_entries.rb +0 -54
- data/spec/models/spotlight/reindexing_log_entry_spec.rb +0 -129
- data/spec/models/spotlight/resources/open_graph_spec.rb +0 -65
- data/spec/services/spotlight/solr_document_builder_spec.rb +0 -66
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
describe Spotlight::Etl::Pipeline do
|
4
|
+
let(:mock_executor) { instance_double(Spotlight::Etl::Executor, call: 'result', estimated_size: 10) }
|
5
|
+
let(:context) { instance_double(Spotlight::Etl::Context) }
|
6
|
+
|
7
|
+
describe '#call' do
|
8
|
+
it 'forwards the call to the executor' do
|
9
|
+
allow(Spotlight::Etl::Executor).to receive(:new).with(subject, context, cache: nil).and_return(mock_executor)
|
10
|
+
|
11
|
+
expect(subject.call(context)).to eq 'result'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#estimated_size' do
|
16
|
+
it 'forwards the call to the executor' do
|
17
|
+
allow(Spotlight::Etl::Executor).to receive(:new).with(subject, context).and_return(mock_executor)
|
18
|
+
|
19
|
+
expect(subject.estimated_size(context)).to eq 10
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
describe Spotlight::Etl::SolrLoader do
|
4
|
+
subject(:loader) { described_class.new(batch_size: 5, solr_connection: mock_connection) }
|
5
|
+
|
6
|
+
let(:mock_connection) { instance_double(RSolr::Client, commit: nil, update: nil) }
|
7
|
+
|
8
|
+
describe '#call' do
|
9
|
+
it 'queues data' do
|
10
|
+
loader.call({})
|
11
|
+
loader.call({})
|
12
|
+
loader.call({})
|
13
|
+
|
14
|
+
expect(loader.size).to eq 3
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'writes data to the index when the queue is long enough' do
|
18
|
+
5.times { loader.call({}) }
|
19
|
+
|
20
|
+
expect(mock_connection).to have_received(:update) do |data:, **|
|
21
|
+
expect(JSON.parse(data).length).to eq 5
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#finalize' do
|
27
|
+
let(:pipeline) do
|
28
|
+
Spotlight::Etl::Executor.new(nil, Spotlight::Etl::Context.new(commit: false))
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'flushes the remaining queue to the index' do
|
32
|
+
3.times { loader.call({}) }
|
33
|
+
|
34
|
+
loader.finalize
|
35
|
+
|
36
|
+
expect(mock_connection).to have_received(:update) do |data:, **|
|
37
|
+
expect(JSON.parse(data).length).to eq 3
|
38
|
+
end
|
39
|
+
|
40
|
+
expect(mock_connection).to have_received(:commit)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'uses the pipeline configuration to determine whether to send a commit' do
|
44
|
+
loader.finalize(pipeline)
|
45
|
+
|
46
|
+
expect(mock_connection).not_to have_received(:commit)
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'error handling' do
|
50
|
+
it 'tries documents individually if the whole batch fails' do
|
51
|
+
allow(mock_connection).to receive(:update) do |data:, **|
|
52
|
+
raise '???' if JSON.parse(data).length > 1
|
53
|
+
end
|
54
|
+
|
55
|
+
3.times { loader.call({}) }
|
56
|
+
loader.finalize
|
57
|
+
|
58
|
+
expect(mock_connection).to have_received(:update).exactly(4).times
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'logs errors from trying individual documents' do
|
62
|
+
allow(pipeline).to receive(:on_error)
|
63
|
+
|
64
|
+
allow(mock_connection).to receive(:update) do |**|
|
65
|
+
raise '???'
|
66
|
+
end
|
67
|
+
|
68
|
+
loader.call({})
|
69
|
+
|
70
|
+
loader.finalize(pipeline)
|
71
|
+
|
72
|
+
expect(pipeline).to have_received(:on_error).once
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
describe Spotlight::Etl::Step do
|
4
|
+
subject(:step) { described_class.new(definition, **step_args) }
|
5
|
+
|
6
|
+
let(:definition) { ->(a = nil) { a || 'value' } }
|
7
|
+
let(:step_args) { {} }
|
8
|
+
|
9
|
+
describe '#call' do
|
10
|
+
it 'returns the value from the defined step' do
|
11
|
+
expect(step.call).to eq('value')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'passes through arguments' do
|
15
|
+
expect(step.call('a')).to eq('a')
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with a class instance' do
|
19
|
+
let(:definition) { Spotlight::Etl::SolrLoader.new }
|
20
|
+
|
21
|
+
it 'runs the call method' do
|
22
|
+
allow(definition).to receive(:call)
|
23
|
+
|
24
|
+
step.call('a')
|
25
|
+
|
26
|
+
expect(definition).to have_received(:call).with('a')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'with a class' do
|
31
|
+
let(:definition) { Spotlight::Etl::SolrLoader }
|
32
|
+
let(:mock) { instance_double(definition, call: nil) }
|
33
|
+
|
34
|
+
it 'runs the call method' do
|
35
|
+
allow(definition).to receive(:new).and_return(mock)
|
36
|
+
|
37
|
+
step.call('a', 'b')
|
38
|
+
|
39
|
+
expect(mock).to have_received(:call).with('a', 'b')
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'uses the same instance for the lifetime of the step' do
|
43
|
+
allow(definition).to receive(:new).once.and_return(mock)
|
44
|
+
|
45
|
+
step.call('a', 'b')
|
46
|
+
step.call('a', 'b')
|
47
|
+
|
48
|
+
expect(mock).to have_received(:call).twice.with('a', 'b')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#finalize' do
|
54
|
+
it 'does nothing if the definition does not have a #finalize method' do
|
55
|
+
expect { step.finalize }.not_to raise_exception
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'with a loader' do
|
59
|
+
let(:definition) { Spotlight::Etl::SolrLoader.new }
|
60
|
+
|
61
|
+
it 'runs the finalize method' do
|
62
|
+
allow(definition).to receive(:finalize)
|
63
|
+
|
64
|
+
step.finalize
|
65
|
+
|
66
|
+
expect(definition).to have_received(:finalize)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -48,6 +48,8 @@ require 'spotlight'
|
|
48
48
|
|
49
49
|
# configure spotlight with all the settings necessary to test functionality
|
50
50
|
Spotlight::Engine.config.exhibit_themes = %w[default modern]
|
51
|
+
Spotlight::Engine.config.reindexing_batch_count = 1
|
52
|
+
Spotlight::Engine.config.assign_default_roles_to_first_user = false
|
51
53
|
|
52
54
|
Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
|
53
55
|
|
@@ -62,11 +64,6 @@ RSpec.configure do |config|
|
|
62
64
|
|
63
65
|
config.use_transactional_fixtures = true
|
64
66
|
|
65
|
-
config.before do
|
66
|
-
# The first user is automatically granted admin privileges; we don't want that behavior for many of our tests
|
67
|
-
Spotlight::Engine.user_class.create email: 'initial+admin@example.com', password: 'password', password_confirmation: 'password'
|
68
|
-
end
|
69
|
-
|
70
67
|
if defined? Devise::Test::ControllerHelpers
|
71
68
|
config.include Devise::Test::ControllerHelpers, type: :controller
|
72
69
|
config.include Devise::Test::ControllerHelpers, type: :view
|
@@ -1,21 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
describe 'spotlight/dashboards/_reindexing_activity.html.erb', type: :view do
|
4
|
-
# recent reindexing entries should be sorted by start_time in descending order, so mock that behavior
|
5
|
-
let(:recent_reindexing) do
|
6
|
-
[FactoryBot.build(:unstarted_reindexing_log_entry)] + # nil start_time is trouble for the sort_by used to create the rest of the fixture's rows
|
7
|
-
[
|
8
|
-
FactoryBot.build(:reindexing_log_entry),
|
9
|
-
FactoryBot.build(:in_progress_reindexing_log_entry),
|
10
|
-
FactoryBot.build(:recent_reindexing_log_entry),
|
11
|
-
FactoryBot.build(:failed_reindexing_log_entry)
|
12
|
-
].sort_by(&:start_time).reverse
|
13
|
-
end
|
14
4
|
let(:p) { 'spotlight/dashboards/reindexing_activity' }
|
15
5
|
|
6
|
+
before do
|
7
|
+
assign(:recent_reindexing, recent_reindexing)
|
8
|
+
end
|
9
|
+
|
16
10
|
context 'the reindexing log is empty' do
|
11
|
+
let(:recent_reindexing) { [] }
|
12
|
+
|
17
13
|
before do
|
18
|
-
assign(:recent_reindexing, [])
|
19
14
|
render p
|
20
15
|
end
|
21
16
|
|
@@ -29,8 +24,18 @@ describe 'spotlight/dashboards/_reindexing_activity.html.erb', type: :view do
|
|
29
24
|
end
|
30
25
|
|
31
26
|
context 'the reindexing log has entries' do
|
27
|
+
# recent reindexing entries should be sorted by start_time in descending order, so mock that behavior
|
28
|
+
let(:recent_reindexing) do
|
29
|
+
[
|
30
|
+
FactoryBot.build(:job_tracker, status: 'enqueued'),
|
31
|
+
FactoryBot.build(:job_tracker, status: 'completed', data: { progress: 10 }),
|
32
|
+
FactoryBot.build(:job_tracker, status: 'in_progress', created_at: Time.zone.parse('January 10, 2017 23:00')),
|
33
|
+
FactoryBot.build(:job_tracker, status: 'completed', data: { progress: 100 }),
|
34
|
+
FactoryBot.build(:job_tracker, status: 'failed', data: { progress: 10 })
|
35
|
+
]
|
36
|
+
end
|
37
|
+
|
32
38
|
before do
|
33
|
-
assign(:recent_reindexing, recent_reindexing)
|
34
39
|
render p
|
35
40
|
end
|
36
41
|
|
@@ -43,7 +48,7 @@ describe 'spotlight/dashboards/_reindexing_activity.html.erb', type: :view do
|
|
43
48
|
end
|
44
49
|
|
45
50
|
it 'formats the start time correctly' do
|
46
|
-
expect(rendered).to have_css('table.table-striped td', text: 'January 05, 2017 23:00', count:
|
51
|
+
expect(rendered).to have_css('table.table-striped td', text: 'January 05, 2017 23:00', count: 4)
|
47
52
|
expect(rendered).to have_css('table.table-striped td', text: 'January 10, 2017 23:00', count: 1)
|
48
53
|
end
|
49
54
|
|
@@ -60,11 +65,6 @@ describe 'spotlight/dashboards/_reindexing_activity.html.erb', type: :view do
|
|
60
65
|
expect(rendered).to have_css('table.table-striped td', text: '5 minutes', count: 3)
|
61
66
|
end
|
62
67
|
|
63
|
-
it 'displays nothing in the duration column or start time column when the info is unavailable (e.g. unstarted or in_progress attempts)' do
|
64
|
-
# we expect 2 blank durations, and 1 blank start time (1 unstarted log entry w/ blank start and duration, 1 in_progress w/ blank duration)
|
65
|
-
expect(rendered).to have_css('table.table-striped td', text: /^$/, count: 3)
|
66
|
-
end
|
67
|
-
|
68
68
|
it 'displays the status of the reindexing attempt using localized text' do
|
69
69
|
expect(rendered).to have_css('table.table-striped td', text: 'Not yet started', count: 1)
|
70
70
|
expect(rendered).to have_css('table.table-striped td', text: 'Successful', count: 2)
|
@@ -74,8 +74,11 @@ describe 'spotlight/dashboards/_reindexing_activity.html.erb', type: :view do
|
|
74
74
|
end
|
75
75
|
|
76
76
|
context 'a reindexing log entry has a null user' do
|
77
|
+
let(:recent_reindexing) do
|
78
|
+
[FactoryBot.build(:job_tracker, status: 'completed', data: { progress: 10 }, user: nil)]
|
79
|
+
end
|
80
|
+
|
77
81
|
it 'displays blank in the user field and renders without error' do
|
78
|
-
assign(:recent_reindexing, [FactoryBot.build(:reindexing_log_entry_no_user)])
|
79
82
|
expect { render p }.not_to raise_error
|
80
83
|
|
81
84
|
# we expect one blank table cell for the user, and values for everything else
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight-spotlight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.
|
4
|
+
version: 3.0.0.rc4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
@@ -11,8 +11,22 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2021-02-
|
14
|
+
date: 2021-02-04 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: activejob-status
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
16
30
|
- !ruby/object:Gem::Dependency
|
17
31
|
name: acts-as-taggable-on
|
18
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -425,6 +439,9 @@ dependencies:
|
|
425
439
|
name: rails
|
426
440
|
requirement: !ruby/object:Gem::Requirement
|
427
441
|
requirements:
|
442
|
+
- - ">="
|
443
|
+
- !ruby/object:Gem::Version
|
444
|
+
version: '5.2'
|
428
445
|
- - "<"
|
429
446
|
- !ruby/object:Gem::Version
|
430
447
|
version: '6.2'
|
@@ -432,6 +449,9 @@ dependencies:
|
|
432
449
|
prerelease: false
|
433
450
|
version_requirements: !ruby/object:Gem::Requirement
|
434
451
|
requirements:
|
452
|
+
- - ">="
|
453
|
+
- !ruby/object:Gem::Version
|
454
|
+
version: '5.2'
|
435
455
|
- - "<"
|
436
456
|
- !ruby/object:Gem::Version
|
437
457
|
version: '6.2'
|
@@ -1025,10 +1045,16 @@ files:
|
|
1025
1045
|
- app/helpers/spotlight/searches_helper.rb
|
1026
1046
|
- app/helpers/spotlight/title_helper.rb
|
1027
1047
|
- app/helpers/spotlight/translations_helper.rb
|
1048
|
+
- app/jobs/concerns/spotlight/job_tracking.rb
|
1049
|
+
- app/jobs/concerns/spotlight/limit_concurrency.rb
|
1028
1050
|
- app/jobs/spotlight/add_uploads_from_csv.rb
|
1051
|
+
- app/jobs/spotlight/application_job.rb
|
1052
|
+
- app/jobs/spotlight/cleanup_job_trackers_job.rb
|
1029
1053
|
- app/jobs/spotlight/default_thumbnail_job.rb
|
1054
|
+
- app/jobs/spotlight/reindex_exhibit_job.rb
|
1030
1055
|
- app/jobs/spotlight/reindex_job.rb
|
1031
1056
|
- app/jobs/spotlight/rename_sidecar_field_job.rb
|
1057
|
+
- app/jobs/spotlight/update_job_trackers_job.rb
|
1032
1058
|
- app/mailers/spotlight/confirmation_mailer.rb
|
1033
1059
|
- app/mailers/spotlight/contact_mailer.rb
|
1034
1060
|
- app/mailers/spotlight/indexing_complete_mailer.rb
|
@@ -1040,7 +1066,6 @@ files:
|
|
1040
1066
|
- app/models/concerns/spotlight/exhibit_analytics.rb
|
1041
1067
|
- app/models/concerns/spotlight/exhibit_defaults.rb
|
1042
1068
|
- app/models/concerns/spotlight/exhibit_documents.rb
|
1043
|
-
- app/models/concerns/spotlight/resources/open_graph.rb
|
1044
1069
|
- app/models/concerns/spotlight/resources/web.rb
|
1045
1070
|
- app/models/concerns/spotlight/sitemap.rb
|
1046
1071
|
- app/models/concerns/spotlight/solr_document.rb
|
@@ -1075,6 +1100,7 @@ files:
|
|
1075
1100
|
- app/models/spotlight/contact_image.rb
|
1076
1101
|
- app/models/spotlight/custom_field.rb
|
1077
1102
|
- app/models/spotlight/custom_search_field.rb
|
1103
|
+
- app/models/spotlight/event.rb
|
1078
1104
|
- app/models/spotlight/exhibit.rb
|
1079
1105
|
- app/models/spotlight/exhibit_thumbnail.rb
|
1080
1106
|
- app/models/spotlight/feature_page.rb
|
@@ -1084,6 +1110,7 @@ files:
|
|
1084
1110
|
- app/models/spotlight/group.rb
|
1085
1111
|
- app/models/spotlight/group_member.rb
|
1086
1112
|
- app/models/spotlight/home_page.rb
|
1113
|
+
- app/models/spotlight/job_tracker.rb
|
1087
1114
|
- app/models/spotlight/language.rb
|
1088
1115
|
- app/models/spotlight/lock.rb
|
1089
1116
|
- app/models/spotlight/main_navigation.rb
|
@@ -1093,7 +1120,6 @@ files:
|
|
1093
1120
|
- app/models/spotlight/page_content.rb
|
1094
1121
|
- app/models/spotlight/page_content/sir_trevor.rb
|
1095
1122
|
- app/models/spotlight/reindex_progress.rb
|
1096
|
-
- app/models/spotlight/reindexing_log_entry.rb
|
1097
1123
|
- app/models/spotlight/resource.rb
|
1098
1124
|
- app/models/spotlight/resources/csv_upload.rb
|
1099
1125
|
- app/models/spotlight/resources/iiif_harvester.rb
|
@@ -1109,12 +1135,18 @@ files:
|
|
1109
1135
|
- app/presenters/spotlight/iiif_manifest_presenter.rb
|
1110
1136
|
- app/services/spotlight/carrierwave_file_resolver.rb
|
1111
1137
|
- app/services/spotlight/clone_translated_page_from_locale.rb
|
1138
|
+
- app/services/spotlight/etl.rb
|
1139
|
+
- app/services/spotlight/etl/context.rb
|
1140
|
+
- app/services/spotlight/etl/executor.rb
|
1141
|
+
- app/services/spotlight/etl/loaders.rb
|
1142
|
+
- app/services/spotlight/etl/pipeline.rb
|
1143
|
+
- app/services/spotlight/etl/solr_loader.rb
|
1144
|
+
- app/services/spotlight/etl/sources.rb
|
1145
|
+
- app/services/spotlight/etl/step.rb
|
1146
|
+
- app/services/spotlight/etl/transforms.rb
|
1112
1147
|
- app/services/spotlight/exhibit_import_export_service.rb
|
1113
1148
|
- app/services/spotlight/iiif_resource_resolver.rb
|
1114
1149
|
- app/services/spotlight/invite_users_service.rb
|
1115
|
-
- app/services/spotlight/resources/iiif_builder.rb
|
1116
|
-
- app/services/spotlight/solr_document_builder.rb
|
1117
|
-
- app/services/spotlight/upload_solr_document_builder.rb
|
1118
1150
|
- app/services/spotlight/validity_checker.rb
|
1119
1151
|
- app/uploaders/spotlight/attachment_uploader.rb
|
1120
1152
|
- app/uploaders/spotlight/featured_image_uploader.rb
|
@@ -1386,6 +1418,8 @@ files:
|
|
1386
1418
|
- db/migrate/20191205112300_add_unique_index_to_sidecars.rb
|
1387
1419
|
- db/migrate/20200403161512_add_subtitle_to_searches.rb
|
1388
1420
|
- db/migrate/20210113092223_create_spotlight_groups.rb
|
1421
|
+
- db/migrate/20210122082032_create_job_trackers.rb
|
1422
|
+
- db/migrate/20210126123041_create_events.rb
|
1389
1423
|
- lib/blacklight/spotlight.rb
|
1390
1424
|
- lib/generators/spotlight/install_generator.rb
|
1391
1425
|
- lib/generators/spotlight/scaffold_resource_generator.rb
|
@@ -1454,10 +1488,10 @@ files:
|
|
1454
1488
|
- spec/factories/exhibits.rb
|
1455
1489
|
- spec/factories/featured_images.rb
|
1456
1490
|
- spec/factories/group.rb
|
1491
|
+
- spec/factories/job_trackers.rb
|
1457
1492
|
- spec/factories/language.rb
|
1458
1493
|
- spec/factories/main_navigation.rb
|
1459
1494
|
- spec/factories/pages.rb
|
1460
|
-
- spec/factories/reindexing_log_entries.rb
|
1461
1495
|
- spec/factories/resources.rb
|
1462
1496
|
- spec/factories/roles.rb
|
1463
1497
|
- spec/factories/searches.rb
|
@@ -1547,6 +1581,7 @@ files:
|
|
1547
1581
|
- spec/i18n_spec.rb
|
1548
1582
|
- spec/jobs/spotlight/add_uploads_from_csv_spec.rb
|
1549
1583
|
- spec/jobs/spotlight/default_thumbnail_job_spec.rb
|
1584
|
+
- spec/jobs/spotlight/reindex_exhibit_job_spec.rb
|
1550
1585
|
- spec/jobs/spotlight/reindex_job_spec.rb
|
1551
1586
|
- spec/jobs/spotlight/rename_sidecar_field_job_spec.rb
|
1552
1587
|
- spec/lib/migration/iiif_spec.rb
|
@@ -1588,12 +1623,10 @@ files:
|
|
1588
1623
|
- spec/models/spotlight/page_configurations_spec.rb
|
1589
1624
|
- spec/models/spotlight/page_spec.rb
|
1590
1625
|
- spec/models/spotlight/reindex_progress_spec.rb
|
1591
|
-
- spec/models/spotlight/reindexing_log_entry_spec.rb
|
1592
1626
|
- spec/models/spotlight/resource_spec.rb
|
1593
1627
|
- spec/models/spotlight/resources/iiif_harvester_spec.rb
|
1594
1628
|
- spec/models/spotlight/resources/iiif_manifest_spec.rb
|
1595
1629
|
- spec/models/spotlight/resources/iiif_service_spec.rb
|
1596
|
-
- spec/models/spotlight/resources/open_graph_spec.rb
|
1597
1630
|
- spec/models/spotlight/resources/upload_spec.rb
|
1598
1631
|
- spec/models/spotlight/resources/web_spec.rb
|
1599
1632
|
- spec/models/spotlight/role_spec.rb
|
@@ -1611,10 +1644,14 @@ files:
|
|
1611
1644
|
- spec/routing/spotlight/pages_routing_spec.rb
|
1612
1645
|
- spec/services/spotlight/carrierwave_file_resolver_spec.rb
|
1613
1646
|
- spec/services/spotlight/clone_translated_page_from_locale_spec.rb
|
1647
|
+
- spec/services/spotlight/etl/context_spec.rb
|
1648
|
+
- spec/services/spotlight/etl/executor_spec.rb
|
1649
|
+
- spec/services/spotlight/etl/pipeline_spec.rb
|
1650
|
+
- spec/services/spotlight/etl/solr_loader_spec.rb
|
1651
|
+
- spec/services/spotlight/etl/step_spec.rb
|
1614
1652
|
- spec/services/spotlight/exhibit_import_export_service_spec.rb
|
1615
1653
|
- spec/services/spotlight/iiif_resource_resolver_spec.rb
|
1616
1654
|
- spec/services/spotlight/invite_users_service_spec.rb
|
1617
|
-
- spec/services/spotlight/solr_document_builder_spec.rb
|
1618
1655
|
- spec/spec_helper.rb
|
1619
1656
|
- spec/support/controllers/engine_helpers.rb
|
1620
1657
|
- spec/support/disable_friendly_id_deprecation_warnings.rb
|
@@ -1795,10 +1832,10 @@ test_files:
|
|
1795
1832
|
- spec/factories/exhibits.rb
|
1796
1833
|
- spec/factories/featured_images.rb
|
1797
1834
|
- spec/factories/group.rb
|
1835
|
+
- spec/factories/job_trackers.rb
|
1798
1836
|
- spec/factories/language.rb
|
1799
1837
|
- spec/factories/main_navigation.rb
|
1800
1838
|
- spec/factories/pages.rb
|
1801
|
-
- spec/factories/reindexing_log_entries.rb
|
1802
1839
|
- spec/factories/resources.rb
|
1803
1840
|
- spec/factories/roles.rb
|
1804
1841
|
- spec/factories/searches.rb
|
@@ -1888,6 +1925,7 @@ test_files:
|
|
1888
1925
|
- spec/i18n_spec.rb
|
1889
1926
|
- spec/jobs/spotlight/add_uploads_from_csv_spec.rb
|
1890
1927
|
- spec/jobs/spotlight/default_thumbnail_job_spec.rb
|
1928
|
+
- spec/jobs/spotlight/reindex_exhibit_job_spec.rb
|
1891
1929
|
- spec/jobs/spotlight/reindex_job_spec.rb
|
1892
1930
|
- spec/jobs/spotlight/rename_sidecar_field_job_spec.rb
|
1893
1931
|
- spec/lib/migration/iiif_spec.rb
|
@@ -1929,12 +1967,10 @@ test_files:
|
|
1929
1967
|
- spec/models/spotlight/page_configurations_spec.rb
|
1930
1968
|
- spec/models/spotlight/page_spec.rb
|
1931
1969
|
- spec/models/spotlight/reindex_progress_spec.rb
|
1932
|
-
- spec/models/spotlight/reindexing_log_entry_spec.rb
|
1933
1970
|
- spec/models/spotlight/resource_spec.rb
|
1934
1971
|
- spec/models/spotlight/resources/iiif_harvester_spec.rb
|
1935
1972
|
- spec/models/spotlight/resources/iiif_manifest_spec.rb
|
1936
1973
|
- spec/models/spotlight/resources/iiif_service_spec.rb
|
1937
|
-
- spec/models/spotlight/resources/open_graph_spec.rb
|
1938
1974
|
- spec/models/spotlight/resources/upload_spec.rb
|
1939
1975
|
- spec/models/spotlight/resources/web_spec.rb
|
1940
1976
|
- spec/models/spotlight/role_spec.rb
|
@@ -1952,10 +1988,14 @@ test_files:
|
|
1952
1988
|
- spec/routing/spotlight/pages_routing_spec.rb
|
1953
1989
|
- spec/services/spotlight/carrierwave_file_resolver_spec.rb
|
1954
1990
|
- spec/services/spotlight/clone_translated_page_from_locale_spec.rb
|
1991
|
+
- spec/services/spotlight/etl/context_spec.rb
|
1992
|
+
- spec/services/spotlight/etl/executor_spec.rb
|
1993
|
+
- spec/services/spotlight/etl/pipeline_spec.rb
|
1994
|
+
- spec/services/spotlight/etl/solr_loader_spec.rb
|
1995
|
+
- spec/services/spotlight/etl/step_spec.rb
|
1955
1996
|
- spec/services/spotlight/exhibit_import_export_service_spec.rb
|
1956
1997
|
- spec/services/spotlight/iiif_resource_resolver_spec.rb
|
1957
1998
|
- spec/services/spotlight/invite_users_service_spec.rb
|
1958
|
-
- spec/services/spotlight/solr_document_builder_spec.rb
|
1959
1999
|
- spec/spec_helper.rb
|
1960
2000
|
- spec/support/controllers/engine_helpers.rb
|
1961
2001
|
- spec/support/disable_friendly_id_deprecation_warnings.rb
|