bulk_dependency_eraser 1.5.0 → 2.0.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: 3466516854a6d613dae24320c55a3a5de1d921b53f8e9de06f08cde2226ff87d
4
- data.tar.gz: 34c1025b73e2410eb3dca55ff7197903a1da148ed1bad55833f8495d70900265
3
+ metadata.gz: a7d8f49a22e2103cef90bfb21c415d0dd687040cf31961d199ff5041d942de68
4
+ data.tar.gz: 5d264a97b2a00f479c13d8f69a2b00218464700465b2f8cf6f7703d37742b4a5
5
5
  SHA512:
6
- metadata.gz: 67caff3857272988508f54f08aad5b8eddefb4fbd545a652e1d1cb060690b49c01270758237f6a37be4cac52a7c2f8ca43d3d543ab25d5287e0868cca9819443
7
- data.tar.gz: 366cc6941a419a0a5437422f7c22f64c712a1cf4a222638de58c22b672f5d60086aadffda673f7edc60565e34eda7bf613345d4d87593097ed24a0aef60aa592
6
+ metadata.gz: cdfe1a03baab1a7d0bbd1a6984723815790dca786564df1cdf322ace227fc4734db60ae5c11d42d0b0d1f9f507fc6483091b42a641927acfe12cd87b5cf5eedb
7
+ data.tar.gz: 1c80246cc7315d5250fdbf0aa75fb199f0b1cdedd510282e45885e476caaff5ecee2896ef12a5053060858a300d860cb1ac2ace462907d0a021efed7dfa7cc9f
@@ -94,27 +94,6 @@ module BulkDependencyEraser
94
94
  end
95
95
  end
96
96
 
97
- # Reverse order IDs
98
- # - if a class self-referenced itself the children will be deleted/nullified before parent
99
- deletion_list.keys.each do |class_name|
100
- deletion_list[class_name] = deletion_list.delete(class_name).reverse
101
-
102
- # TODO: Hard to test if not sorted
103
- deletion_list[class_name] = deletion_list[class_name].sort if Rails.env.test?
104
- end
105
-
106
- nullification_list.keys.each do |class_name|
107
- columns_and_ids = nullification_list.delete(class_name)
108
- # we don't need to reverse the column keys
109
- columns_and_ids.keys.each do |column_name|
110
- columns_and_ids[column_name] = columns_and_ids.delete(column_name).reverse
111
-
112
- # TODO: Hard to test if not sorted
113
- columns_and_ids[column_name] = columns_and_ids.delete(column_name).sort if Rails.env.test?
114
- end
115
- nullification_list[class_name] = columns_and_ids
116
- end
117
-
118
97
  return build_result
119
98
  end
120
99
 
@@ -36,32 +36,29 @@ module BulkDependencyEraser
36
36
  puts "ActiveRecord::Base.connection.disable_referential_integrity - disabled!"
37
37
  end
38
38
 
39
- ActiveRecord::Base.transaction do
40
- current_class_name = 'N/A'
41
- begin
42
- # IDs should have already been reversed in builder
43
- class_names_and_ids.keys.reverse.each do |class_name|
44
- current_class_name = class_name
45
- ids = class_names_and_ids[class_name]
46
- klass = class_name.constantize
39
+ current_class_name = 'N/A'
40
+ begin
41
+ # IDs should have already been reversed in builder
42
+ class_names_and_ids.keys.reverse.each do |class_name|
43
+ current_class_name = class_name
44
+ ids = class_names_and_ids[class_name].reverse
45
+ klass = class_name.constantize
47
46
 
48
- if opts_c.enable_invalid_foreign_key_detection
49
- # delete with referential integrity
47
+ if opts_c.enable_invalid_foreign_key_detection
48
+ # delete with referential integrity
49
+ delete_by_klass_and_ids(klass, ids)
50
+ else
51
+ # delete without referential integrity
52
+ # Disable any ActiveRecord::InvalidForeignKey raised errors.
53
+ # - src: https://stackoverflow.com/questions/41005849/rails-migrations-temporarily-ignore-foreign-key-constraint
54
+ # https://apidock.com/rails/ActiveRecord/ConnectionAdapters/AbstractAdapter/disable_referential_integrity
55
+ ActiveRecord::Base.connection.disable_referential_integrity do
50
56
  delete_by_klass_and_ids(klass, ids)
51
- else
52
- # delete without referential integrity
53
- # Disable any ActiveRecord::InvalidForeignKey raised errors.
54
- # - src: https://stackoverflow.com/questions/41005849/rails-migrations-temporarily-ignore-foreign-key-constraint
55
- # https://apidock.com/rails/ActiveRecord/ConnectionAdapters/AbstractAdapter/disable_referential_integrity
56
- ActiveRecord::Base.connection.disable_referential_integrity do
57
- delete_by_klass_and_ids(klass, ids)
58
- end
59
57
  end
60
58
  end
61
- rescue StandardError => e
62
- report_error("Issue attempting to delete '#{current_class_name}': #{e.class.name} - #{e.message}")
63
- raise ActiveRecord::Rollback
64
59
  end
60
+ rescue StandardError => e
61
+ report_error("Issue attempting to delete '#{current_class_name}': #{e.class.name} - #{e.message}")
65
62
  end
66
63
 
67
64
  return errors.none?
@@ -89,37 +89,36 @@ module BulkDependencyEraser
89
89
  end
90
90
 
91
91
  def execute
92
- ActiveRecord::Base.transaction do
93
- current_class_name = 'N/A'
94
- current_column = 'N/A'
95
- begin
96
- # column_and_ids should have already been reversed in builder
97
- class_names_columns_and_ids.keys.reverse.each do |class_name|
98
- current_class_name = class_name
99
- klass = class_name.constantize
100
- columns_and_ids = class_names_columns_and_ids[class_name]
101
-
102
- columns_and_ids.each do |column, ids|
103
- current_column = column
104
-
105
- if opts_c.enable_invalid_foreign_key_detection
106
- # nullify with referential integrity
92
+ current_class_name = 'N/A'
93
+ current_column = 'N/A'
94
+ begin
95
+ # column_and_ids should have already been reversed in builder
96
+ class_names_columns_and_ids.keys.reverse.each do |class_name|
97
+ current_class_name = class_name
98
+ klass = class_name.constantize
99
+ columns_and_ids = class_names_columns_and_ids[class_name]
100
+
101
+ columns_and_ids.each do |column, ids|
102
+ current_column = column
103
+ # Reversing IDs. Last ones in are more likely to be dependencies, and should be deleted first.
104
+ ids = ids.reverse
105
+
106
+ if opts_c.enable_invalid_foreign_key_detection
107
+ # nullify with referential integrity
108
+ nullify_by_klass_column_and_ids(klass, column, ids)
109
+ else
110
+ # nullify without referential integrity
111
+ # Disable any ActiveRecord::InvalidForeignKey raised errors.
112
+ # - src: https://stackoverflow.com/questions/41005849/rails-migrations-temporarily-ignore-foreign-key-constraint
113
+ # https://apidock.com/rails/ActiveRecord/ConnectionAdapters/AbstractAdapter/disable_referential_integrity
114
+ ActiveRecord::Base.connection.disable_referential_integrity do
107
115
  nullify_by_klass_column_and_ids(klass, column, ids)
108
- else
109
- # nullify without referential integrity
110
- # Disable any ActiveRecord::InvalidForeignKey raised errors.
111
- # - src: https://stackoverflow.com/questions/41005849/rails-migrations-temporarily-ignore-foreign-key-constraint
112
- # https://apidock.com/rails/ActiveRecord/ConnectionAdapters/AbstractAdapter/disable_referential_integrity
113
- ActiveRecord::Base.connection.disable_referential_integrity do
114
- nullify_by_klass_column_and_ids(klass, column, ids)
115
- end
116
116
  end
117
117
  end
118
118
  end
119
- rescue StandardError => e
120
- report_error("Issue attempting to nullify '#{current_class_name}' column '#{current_column}': #{e.class.name} - #{e.message}")
121
- raise ActiveRecord::Rollback
122
119
  end
120
+ rescue StandardError => e
121
+ report_error("Issue attempting to nullify '#{current_class_name}' column '#{current_column}': #{e.class.name} - #{e.message}")
123
122
  end
124
123
 
125
124
  return errors.none?
@@ -1,3 +1,3 @@
1
1
  module BulkDependencyEraser
2
- VERSION = "1.5.0".freeze
2
+ VERSION = "2.0.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: 1.5.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - benjamin.dana.software.dev@gmail.com