bulk_dependency_eraser 4.2.0 → 4.2.2

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
  SHA256:
3
- metadata.gz: 10daaabe21acb05d187dcf4c76fae13bd3e3b3aee727be9c6ebd0a315d581b54
4
- data.tar.gz: d07c7a1303090c9e9291c19c8b6ec9974f2e9feee050e5962f63522ffd23c623
3
+ metadata.gz: 8efe5bca3c57d245dc00fcb0d04a57bab5dc9eb19d81e55be43a56e6adb7752c
4
+ data.tar.gz: b6b2d2bf30e7dd964d5032bd61ed1e57f820bec667dd3435c79567e24d6a0265
5
5
  SHA512:
6
- metadata.gz: 2152f55aab950c36636bce7e67507ef6a5a27ee7b553a60727796550dc7e2bb489e1bc364beb47e8bce4adf1e0a778b5d5d7011631a77c8734035f85d77f1ded
7
- data.tar.gz: 5889cd52acbcde3642db18e60f5958c189e4ecfc8066b635b33f5dfe5eb55810141244828be8043b1c19b403e773fde73dac302de6eabcf9147008e8f6191d85
6
+ metadata.gz: b7981de1665f8c6c7f7c2054c446a09edaa6add210481e091d2034f086eb9703bd619b23de29d03777bb8445b9fc7902329af8ce262204510e0e7695ebe380be
7
+ data.tar.gz: 42cfbfdb8ad934d9b4d1a806e9da158e82a2ddb2b38cbee790423c5ff046aa3517370f12bd6e5cad00f6ec7db57fb6ee3082bbcb6faefadc866f6332919a6143
@@ -232,7 +232,8 @@ module BulkDependencyEraser
232
232
  query_primary_keys.each_with_index do |primary_key, plucked_index|
233
233
  query_additional_identifiers[primary_key] ||= {}
234
234
  results_per_additional_column.each do |column, column_results|
235
- query_additional_identifiers[primary_key][column] = column_results[plucked_index]
235
+ # stringify the column key. All keys in the additional_identifiers are strings; The unification is nice and also JSONable.
236
+ query_additional_identifiers[primary_key][column.to_s] = column_results[plucked_index]
236
237
  end
237
238
  end
238
239
 
@@ -58,7 +58,7 @@ module BulkDependencyEraser
58
58
 
59
59
  def initialize class_names_and_ids: {}, additional_identifiers_by_id: {}, opts: {}
60
60
  @class_names_and_ids = class_names_and_ids
61
- @additional_identifiers_by_id = additional_identifiers_by_id
61
+ @additional_identifiers_by_id = additional_identifiers_by_id || {}
62
62
  super(opts:)
63
63
  end
64
64
 
@@ -73,7 +73,8 @@ module BulkDependencyEraser
73
73
  class_names_and_ids.keys.reverse.each do |class_name|
74
74
  current_class_name = class_name
75
75
  additional_identifiers = additional_identifiers_by_id[class_name]
76
- raise "invalid state! #{class_name} not found in 'additional_identifiers_by_id' list" if additional_identifiers.nil?
76
+ # We have to give implementers the ability to make changes to these lists. Even a full clear.
77
+ # raise "invalid state! #{class_name} not found in 'additional_identifiers_by_id' list" if additional_identifiers.nil?
77
78
 
78
79
  # Last in, First out
79
80
  ids = class_names_and_ids[class_name].reverse
@@ -128,6 +129,7 @@ module BulkDependencyEraser
128
129
  opts_c.disable_delete_batching.nil? ? opts_c.disable_batching : opts_c.disable_delete_batching
129
130
  end
130
131
 
132
+ # @param additional_identifiers [Hash] can be nil, if chosen to be so by implementers
131
133
  def delete_by_klass_and_ids(klass, ids, additional_identifiers:)
132
134
  puts "Deleting #{klass.name}'s IDs: #{ids}" if opts_c.verbose
133
135
  query = klass.unscoped
@@ -136,7 +138,7 @@ module BulkDependencyEraser
136
138
  if batching_disabled?
137
139
  puts "Deleting without batching" if opts_c.verbose
138
140
  # Get column-names/keys of any additional identifer columns
139
- detected_additional_identifier_columns = additional_identifiers.values.flat_map(&:keys).uniq
141
+ detected_additional_identifier_columns = additional_identifiers&.values&.flat_map(&:keys)&.uniq || []
140
142
  delete_in_db do
141
143
  deletion_query = query.where(id: ids)
142
144
  # Apply any additional query identifiers (i.e. :ctid column)
@@ -154,9 +156,9 @@ module BulkDependencyEraser
154
156
  else
155
157
  puts "Deleting with batching" if opts_c.verbose
156
158
  ids.each_slice(batch_size) do |ids_subset|
157
- additional_identifiers_subset = additional_identifiers.slice(*ids_subset)
159
+ additional_identifiers_subset = additional_identifiers&.slice(*ids_subset)
158
160
  # Get column-names/keys of any additional identifer columns
159
- detected_additional_identifier_columns = additional_identifiers_subset.values.flat_map(&:keys).uniq
161
+ detected_additional_identifier_columns = additional_identifiers_subset&.values&.flat_map(&:keys)&.uniq || []
160
162
  delete_in_db do
161
163
  deletion_query = query.where(id: ids_subset)
162
164
  # Apply any additional query identifiers (i.e. :ctid column)
@@ -1,3 +1,3 @@
1
1
  module BulkDependencyEraser
2
- VERSION = "4.2.0".freeze
2
+ VERSION = "4.2.2".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bulk_dependency_eraser
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.0
4
+ version: 4.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - benjamin.dana.software.dev@gmail.com