cdmbl 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5c42251d98410bacf0c610a536e9514e0e4a6662
4
- data.tar.gz: 77fb5f56972cf1bb3b7e31ad8be7188cdf4c5fda
3
+ metadata.gz: ec2dc41e2bed58f7f93388d3327fa4b45812ab33
4
+ data.tar.gz: e7d0b8c9b54fce9f35978beafe515f9e17f5441d
5
5
  SHA512:
6
- metadata.gz: 49d38e10d6871c4d4e4e249624b543787f6476aaebb680748babf822932127eac82bdb81259177b7b9e1e543b816ac012e4d08735bf882a57e3829c1175efb13
7
- data.tar.gz: 8d99175077e75f997efb3c0233eeed32d1be2142403d3a566452471faa3b13926573a2c4cba19540dfab2328455175e8c19369ce61d5db6fe2becf5df1de3995
6
+ metadata.gz: 3ed793f0f5cf45571dd89e03649938fbc07a54a05a03942e0646803a8b3270c3c0ae8e97e4b095038cc8634591c2f0897d192ff7bb2c7f9e28415ca2e92c3d2b
7
+ data.tar.gz: 1aa8224e92bdb48bf875e9b4a188db4d06e003f7e0b95b616aff100bb4dd653c12aeb0a6929e74cdd5dfe7e2197a64daa9d762b6e2aacb9ba0afb0ea9ec9a67e
@@ -8,7 +8,7 @@ module CDMBL
8
8
  :oai_deletables_klass
9
9
  def initialize(prefix: '',
10
10
  start: 0,
11
- batch_size: 200,
11
+ batch_size: 10,
12
12
  oai_client: :missing_oai_client,
13
13
  solr_client: :missing_solr_client,
14
14
  oai_deletables_klass: OaiDeletables)
@@ -28,24 +28,25 @@ module CDMBL
28
28
  start + batch_size >= num_found
29
29
  end
30
30
 
31
- private
32
-
33
31
  def deletables
34
- oai_deletables_klass.new(identifiers: docs,
35
- prefix: prefix,
36
- oai_client: oai_client).deletables
32
+ @deletables ||= oai_deletables_klass.new(identifiers: ids,
33
+ oai_client: oai_client,
34
+ prefix: prefix).deletables
37
35
  end
38
36
 
39
- def docs
40
- ids.fetch('response', {}).fetch('docs', {})
37
+ private
38
+
39
+
40
+ def ids
41
+ results.fetch('response', {}).fetch('docs', {}).map { |doc| doc['id'] }
41
42
  end
42
43
 
43
44
  def num_found
44
- ids.fetch('response', {}).fetch('numFound', 0)
45
+ results.fetch('response', {}).fetch('numFound', 0)
45
46
  end
46
47
 
47
- def ids
48
- @ids ||= solr_client.ids(start: start)
48
+ def results
49
+ @results ||= solr_client.ids(start: start)
49
50
  end
50
51
  end
51
52
  end
@@ -3,31 +3,36 @@ module CDMBL
3
3
  class BatchDeleterWorker
4
4
  include Sidekiq::Worker
5
5
  attr_reader :start, :prefix, :oai_url, :solr_url
6
+ attr_accessor :batch_deleter_klass, :oai_client, :solr_client
7
+ sidekiq_options :backtrace => true
6
8
  def perform(start = 0, prefix = '', oai_url = '', solr_url = '')
7
9
  @start = start
8
10
  @prefix = prefix
9
11
  @oai_url = oai_url
10
12
  @solr_url = solr_url
11
13
  delete!
14
+ batch_deleter
12
15
  end
13
16
 
14
17
  private
15
18
 
19
+ def batch_deleter_klass
20
+ @batch_deleter_klass ||= BatchDeleter
21
+ end
22
+
16
23
  def delete!
17
24
  batch_deleter.delete!
18
25
  unless batch_deleter.last_batch?
19
- BatchDeleteWorker.perform_async(start: start + 1,
20
- prefix: prefix,
21
- oai_url: oai_url,
22
- solr_url: solr_url)
26
+ BatchDeleterWorker.perform_async start + 1, prefix, oai_url, solr_url
23
27
  end
24
28
  end
25
29
 
26
30
  def batch_deleter
27
- @deleter ||= BatchDeleter.new(start: start,
28
- prefix: prefix,
29
- solr_client: solr_client,
30
- oai_client: oai_client)
31
+ @batch_deleter ||=
32
+ batch_deleter_klass.new(start: start,
33
+ prefix: prefix,
34
+ solr_client: solr_client,
35
+ oai_client: oai_client)
31
36
  end
32
37
 
33
38
  def solr_client
@@ -14,7 +14,7 @@ module CDMBL
14
14
  :params => { :q => '*:*',
15
15
  :defType => 'edismax',
16
16
  :fl => '',
17
- :rows => 200,
17
+ :rows => 10,
18
18
  :start => start
19
19
  }
20
20
  )
@@ -14,7 +14,7 @@ module CDMBL
14
14
 
15
15
  def deletables
16
16
  identifiers.select do |id|
17
- record_exists? to_oai_id(id)
17
+ record_missing? to_oai_id(id)
18
18
  end
19
19
  end
20
20
 
@@ -36,8 +36,8 @@ module CDMBL
36
36
  id.split(':')
37
37
  end
38
38
 
39
- def record_exists?(identifier)
40
- oai_record_klass.new(oai_client: oai_client,
39
+ def record_missing?(identifier)
40
+ !oai_record_klass.new(oai_client: oai_client,
41
41
  identifier: identifier).record_exists?
42
42
  end
43
43
  end
@@ -0,0 +1,12 @@
1
+ require 'cdmbl'
2
+
3
+ namespace :cdmbl do
4
+ desc "delete all records that aren't in a given OAI endpoint"
5
+ task :delete_batch, [:start, :prefix, :oai_url, :solr_url] do |t, args|
6
+ CDMBL::BatchDeleterWorker.perform_async(args[:start].to_i,
7
+ args[:prefix],
8
+ args[:oai_url],
9
+ args[:solr_url])
10
+ end
11
+ end
12
+
data/lib/cdmbl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module CDMBL
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cdmbl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - chadfennell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-14 00:00:00.000000000 Z
11
+ date: 2017-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hash_at_path
@@ -231,6 +231,7 @@ files:
231
231
  - lib/cdmbl/oai_set_lookup.rb
232
232
  - lib/cdmbl/rake_task.rb
233
233
  - lib/cdmbl/record_transformer.rb
234
+ - lib/cdmbl/tasks/delete.rake
234
235
  - lib/cdmbl/tasks/etl.rake
235
236
  - lib/cdmbl/transformer.rb
236
237
  - lib/cdmbl/version.rb