bulk_dependency_eraser 4.2.0 → 4.2.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 +4 -4
- data/lib/bulk_dependency_eraser/deleter.rb +7 -5
- data/lib/bulk_dependency_eraser/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1ee041fa51d9506fdabf317bd2b72fab8be589073d5fa8c8940c6e5654a6bf6
|
4
|
+
data.tar.gz: 8d68033f0554c47a1818ce8e5f96ed047598c6dd3e302151e53589e3475ebdf8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: feae06d17b683a2a19518eca228fa04374265946cf308f45bd95c0e507fcf2a14cb74a79b45a03d03d7d5ad029769f85a68585234cb31c9ca2e45a38be6a80c7
|
7
|
+
data.tar.gz: 928c7bcc857f6ea3bc97165a93d11d7aaf74b15a90c5219e4bfb38137a22d27edf1edcacdc638b3d0bd39d14c91dfd92957663b2e3bb3cb9e473f997817d4080
|
@@ -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
|
-
|
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
|
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
|
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
|
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)
|