bulk_dependency_eraser 2.0.0 → 2.1.0

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: a7d8f49a22e2103cef90bfb21c415d0dd687040cf31961d199ff5041d942de68
4
- data.tar.gz: 5d264a97b2a00f479c13d8f69a2b00218464700465b2f8cf6f7703d37742b4a5
3
+ metadata.gz: e4bda32570c3319238a5ea03f6a71cbae1e20015caf5fe7bdba78cab3c7883a7
4
+ data.tar.gz: 9e371750cd1a05b54bfe724873daaf2c7e9aa66942f168d6417505a1427d46c1
5
5
  SHA512:
6
- metadata.gz: cdfe1a03baab1a7d0bbd1a6984723815790dca786564df1cdf322ace227fc4734db60ae5c11d42d0b0d1f9f507fc6483091b42a641927acfe12cd87b5cf5eedb
7
- data.tar.gz: 1c80246cc7315d5250fdbf0aa75fb199f0b1cdedd510282e45885e476caaff5ecee2896ef12a5053060858a300d860cb1ac2ace462907d0a021efed7dfa7cc9f
6
+ metadata.gz: 33130d09c651a9757af826cbbd5e1363a8f136a3d6e3bf1e2a128dad776185b544fd75a493013cd28d279690094e90cc3dc0f3b23597704df9842eb80e215808
7
+ data.tar.gz: 27f4e6014155961a1286f2d1f490a7ca2709fd2b9594a7c8ab3fb3164c26bbdf99e8609c5494e15e8595b0db9eee94d485a20a772f5a37d58554b497eaee5154
@@ -1,7 +1,29 @@
1
1
  module BulkDependencyEraser
2
2
  class Deleter < Base
3
+ DEFAULT_DB_DELETE_ALL_WRAPPER = ->(block) do
4
+ begin
5
+ block.call
6
+ rescue StandardError => e
7
+ report_error("Issue attempting to delete '#{current_class_name}': #{e.class.name} - #{e.message}")
8
+ end
9
+ end
10
+
3
11
  DEFAULT_OPTS = {
4
12
  verbose: false,
13
+ # Runs once, all deletions occur within it
14
+ # - useful if you wanted to implement a rollback:
15
+ # - i.e:
16
+ # db_delete_all_wrapper: lambda do |block|
17
+ # ActiveRecord::Base.transaction do
18
+ # begin
19
+ # block.call
20
+ # rescue StandardError => e
21
+ # report_error("Issue attempting to delete '#{current_class_name}': #{e.class.name} - #{e.message}")
22
+ # raise ActiveRecord::Rollback
23
+ # end
24
+ # end
25
+ # end
26
+ db_delete_all_wrapper: self::DEFAULT_DB_DELETE_ALL_WRAPPER,
5
27
  db_delete_wrapper: self::DEFAULT_DB_WRITE_WRAPPER,
6
28
  # Set to true if you want 'ActiveRecord::InvalidForeignKey' errors raised during deletions
7
29
  enable_invalid_foreign_key_detection: false,
@@ -37,8 +59,7 @@ module BulkDependencyEraser
37
59
  end
38
60
 
39
61
  current_class_name = 'N/A'
40
- begin
41
- # IDs should have already been reversed in builder
62
+ delete_all_in_db do
42
63
  class_names_and_ids.keys.reverse.each do |class_name|
43
64
  current_class_name = class_name
44
65
  ids = class_names_and_ids[class_name].reverse
@@ -57,8 +78,6 @@ module BulkDependencyEraser
57
78
  end
58
79
  end
59
80
  end
60
- rescue StandardError => e
61
- report_error("Issue attempting to delete '#{current_class_name}': #{e.class.name} - #{e.message}")
62
81
  end
63
82
 
64
83
  return errors.none?
@@ -116,6 +135,13 @@ module BulkDependencyEraser
116
135
  def delete_in_db(&block)
117
136
  puts "Deleting from DB..." if opts_c.verbose
118
137
  opts_c.db_delete_wrapper.call(block)
138
+ puts "Deleting from DB complete." if opts_c.verbose
139
+ end
140
+
141
+ def delete_all_in_db(&block)
142
+ puts "Deleting all from DB..." if opts_c.verbose
143
+ opts_c.db_delete_all_wrapper.call(block)
144
+ puts "Deleting all from DB complete." if opts_c.verbose
119
145
  end
120
146
  end
121
147
  end
@@ -1,7 +1,29 @@
1
1
  module BulkDependencyEraser
2
2
  class Nullifier < Base
3
+ DEFAULT_DB_NULLIFY_ALL_WRAPPER = lambda do |block|
4
+ begin
5
+ block.call
6
+ rescue StandardError => e
7
+ report_error("Issue attempting to nullify '#{current_class_name}' column '#{current_column}': #{e.class.name} - #{e.message}")
8
+ end
9
+ end
10
+
3
11
  DEFAULT_OPTS = {
4
12
  verbose: false,
13
+ # Runs once, all deletions occur within it
14
+ # - useful if you wanted to implement a rollback:
15
+ # - i.e:
16
+ # db_nullify_all_wrapper: lambda do |block|
17
+ # ActiveRecord::Base.transaction do
18
+ # begin
19
+ # block.call
20
+ # rescue StandardError => e
21
+ # report_error("Issue attempting to nullify '#{current_class_name}': #{e.class.name} - #{e.message}")
22
+ # raise ActiveRecord::Rollback
23
+ # end
24
+ # end
25
+ # end
26
+ db_nullify_all_wrapper: self::DEFAULT_DB_NULLIFY_ALL_WRAPPER,
5
27
  db_nullify_wrapper: self::DEFAULT_DB_WRITE_WRAPPER,
6
28
  # Set to true if you want 'ActiveRecord::InvalidForeignKey' errors raised during nullifications
7
29
  # - I can't think of a use-case where a nullification would generate an invalid key error
@@ -91,7 +113,7 @@ module BulkDependencyEraser
91
113
  def execute
92
114
  current_class_name = 'N/A'
93
115
  current_column = 'N/A'
94
- begin
116
+ nullify_all_in_db do
95
117
  # column_and_ids should have already been reversed in builder
96
118
  class_names_columns_and_ids.keys.reverse.each do |class_name|
97
119
  current_class_name = class_name
@@ -117,8 +139,6 @@ module BulkDependencyEraser
117
139
  end
118
140
  end
119
141
  end
120
- rescue StandardError => e
121
- report_error("Issue attempting to nullify '#{current_class_name}' column '#{current_column}': #{e.class.name} - #{e.message}")
122
142
  end
123
143
 
124
144
  return errors.none?
@@ -145,6 +165,9 @@ module BulkDependencyEraser
145
165
  opts_c.disable_nullify_batching.nil? ? opts_c.disable_batching : opts_c.disable_nullify_batching
146
166
  end
147
167
 
168
+ # @param klass [ActiveRecord::Base]
169
+ # @param columns [Symbol | String | Array<String | Symbol>]
170
+ # @param ids [Array[String | Integer]]
148
171
  def nullify_by_klass_column_and_ids klass, columns, ids
149
172
  query = klass.unscoped
150
173
  query = custom_scope_for_query(query)
@@ -183,6 +206,13 @@ module BulkDependencyEraser
183
206
  def nullify_in_db(&block)
184
207
  puts "Nullifying from DB..." if opts_c.verbose
185
208
  opts_c.db_nullify_wrapper.call(block)
209
+ puts "Nullifying from DB complete." if opts_c.verbose
210
+ end
211
+
212
+ def nullify_all_in_db(&block)
213
+ puts "Nullifying all from DB..." if opts_c.verbose
214
+ opts_c.db_nullify_all_wrapper.call(block)
215
+ puts "Nullifying all from DB complete." if opts_c.verbose
186
216
  end
187
217
 
188
218
  end
@@ -1,3 +1,3 @@
1
1
  module BulkDependencyEraser
2
- VERSION = "2.0.0".freeze
2
+ VERSION = "2.1.0".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: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - benjamin.dana.software.dev@gmail.com