db-purger 0.2.2 → 0.2.5
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/db-purger/dynamic_plan_builder.rb +0 -4
- data/lib/db-purger/executor.rb +52 -0
- data/lib/db-purger/plan_builder.rb +6 -1
- data/lib/db-purger.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a9cf35c804bae7cea5b7406c024fa04ab548b13405efdd7cfc5be81f28b15cd
|
4
|
+
data.tar.gz: a6470f9cbd9a857257fe9a7bd783c8e23c50d732dc3ba8db273efa6e5b6d4e9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3cbcf1d21d79937369685f02d1ad9476adf4cf69423a8b7686adb3d277d71263e8ce94990400b2455c94fb5c191e7b29846003afe99b6cce87a706d6dc65c37
|
7
|
+
data.tar.gz: c63a4909bb8b3a45f745165807872ef9b0d3183e1a7bfce6a3007726f33af4c7fc0e5925425cd699b42704e42c8785accba83fa5878f65bae2fb3d7a5b1aa9b0
|
@@ -15,8 +15,6 @@ module DBPurger
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def build(base_table_name, field)
|
18
|
-
write('DBPurger::PlanBuilder.build do')
|
19
|
-
@indent_depth += 1
|
20
18
|
write_table('base', base_table_name.to_s, field, [], nil)
|
21
19
|
line_break
|
22
20
|
model = find_model_for_table(base_table_name)
|
@@ -27,8 +25,6 @@ module DBPurger
|
|
27
25
|
add_child_tables(child_models, foreign_key, 0)
|
28
26
|
end
|
29
27
|
ignore_missing_tables
|
30
|
-
@indent_depth -= 1
|
31
|
-
write('end')
|
32
28
|
@output
|
33
29
|
end
|
34
30
|
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DBPurger
|
4
|
+
# DBPurger::Executor used to execute a purge plan with verification
|
5
|
+
class Executor
|
6
|
+
attr_writer :error_io
|
7
|
+
|
8
|
+
def initialize(database, plan, options = {})
|
9
|
+
@database = database
|
10
|
+
@plan = plan.is_a?(Plan) ? plan : load_plan(plan)
|
11
|
+
setup_config(options)
|
12
|
+
@error_io = $stderr
|
13
|
+
end
|
14
|
+
|
15
|
+
def purge!(purge_value)
|
16
|
+
raise('purge_value is nil') if purge_value.nil?
|
17
|
+
|
18
|
+
@plan.purge!(@database, purge_value)
|
19
|
+
end
|
20
|
+
|
21
|
+
def verify!
|
22
|
+
return if plan_validator.valid?
|
23
|
+
|
24
|
+
output_plan_errors
|
25
|
+
raise('purge plan failed verification')
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def plan_validator
|
31
|
+
@plan_validator ||= PlanValidator.new(@database, @plan)
|
32
|
+
end
|
33
|
+
|
34
|
+
def setup_config(options)
|
35
|
+
::DBPurger.config.explain = options[:explain]
|
36
|
+
::DBPurger.config.explain_file = options[:explain_file]
|
37
|
+
::DBPurger.config.datetime_format = options[:datetime_format]
|
38
|
+
end
|
39
|
+
|
40
|
+
def load_plan(file)
|
41
|
+
PlanBuilder
|
42
|
+
.new(Plan.new)
|
43
|
+
.load_plan_file(file)
|
44
|
+
end
|
45
|
+
|
46
|
+
def output_plan_errors
|
47
|
+
plan_validator.errors.each do |field, error_msg|
|
48
|
+
@error_io.puts "#{field}: #{error_msg}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -58,12 +58,17 @@ module DBPurger
|
|
58
58
|
helper.instance_eval(&block)
|
59
59
|
end
|
60
60
|
|
61
|
+
def load_plan_file(file)
|
62
|
+
instance_eval(File.read(file))
|
63
|
+
@plan
|
64
|
+
end
|
65
|
+
|
61
66
|
private
|
62
67
|
|
63
68
|
def create_table(table_name, field, options, &block)
|
64
69
|
table = Table.new(table_name, field)
|
65
70
|
table.foreign_key = options[:foreign_key]
|
66
|
-
table.batch_size = options[:batch_size]
|
71
|
+
table.batch_size = options[:batch_size] if options[:batch_size]
|
67
72
|
table.conditions = options[:conditions]
|
68
73
|
table.mark_deleted_field = options[:mark_deleted_field]
|
69
74
|
table.mark_deleted_value = options[:mark_deleted_value]
|
data/lib/db-purger.rb
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
module DBPurger
|
5
5
|
autoload :Config, 'db-purger/config'
|
6
6
|
autoload :DynamicPlanBuilder, 'db-purger/dynamic_plan_builder'
|
7
|
+
autoload :Executor, 'db-purger/executor'
|
7
8
|
autoload :Metrics, 'db-purger/metrics'
|
8
9
|
autoload :MetricSubscriber, 'db-purger/metric_subscriber'
|
9
10
|
autoload :PurgeTable, 'db-purger/purge_table'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: db-purger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Doug Youch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dynamic-active-model
|
@@ -47,6 +47,7 @@ files:
|
|
47
47
|
- lib/db-purger.rb
|
48
48
|
- lib/db-purger/config.rb
|
49
49
|
- lib/db-purger/dynamic_plan_builder.rb
|
50
|
+
- lib/db-purger/executor.rb
|
50
51
|
- lib/db-purger/metric_subscriber.rb
|
51
52
|
- lib/db-purger/metrics.rb
|
52
53
|
- lib/db-purger/plan.rb
|