mysql_framework 0.0.6 → 0.0.7
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 089e9d32caf37e266ed17f4c366511814de266b3feaeed97c24781e4f7989de0
|
4
|
+
data.tar.gz: b566cdb40dc0466cc4b2878cc0e994fc252131350e79467e83e32b608717293e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39624dce18fedfc9cc8664c9428bd431fd4f7a773239b7cac6e22cba403c2d839809b55ac82dc12c7f81685f3dbd060f00eda2542db3b871499278a2188f328c
|
7
|
+
data.tar.gz: 21f989dec1fd8399d119e50f038b18679361f924919151d36258468670955712d376c7bb0d928af12a1d60eab7cecae62af9111879dd191a371c7aa1b7420c0a
|
@@ -13,10 +13,10 @@ module MysqlFramework
|
|
13
13
|
|
14
14
|
initialize_script_history
|
15
15
|
|
16
|
-
|
16
|
+
executed_scripts = retrieve_executed_scripts
|
17
17
|
|
18
18
|
mysql_connector.transaction do |client|
|
19
|
-
pending_scripts = calculate_pending_scripts(
|
19
|
+
pending_scripts = calculate_pending_scripts(executed_scripts)
|
20
20
|
MysqlFramework.logger.info do
|
21
21
|
"[#{self.class}] - #{pending_scripts.length} pending data store scripts found."
|
22
22
|
end
|
@@ -35,7 +35,7 @@ module MysqlFramework
|
|
35
35
|
initialize_script_history
|
36
36
|
|
37
37
|
mysql_connector.transaction do |client|
|
38
|
-
pending_scripts = calculate_pending_scripts
|
38
|
+
pending_scripts = calculate_pending_scripts
|
39
39
|
MysqlFramework.logger.info do
|
40
40
|
"[#{self.class}] - #{pending_scripts.length} pending data store scripts found."
|
41
41
|
end
|
@@ -48,23 +48,14 @@ module MysqlFramework
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
def
|
52
|
-
drop_script_history
|
53
|
-
all_tables.each { |table| drop_table(table) }
|
54
|
-
end
|
55
|
-
|
56
|
-
def retrieve_last_executed_script
|
51
|
+
def retrieve_executed_scripts
|
57
52
|
MysqlFramework.logger.debug { "[#{self.class}] - Retrieving last executed script from history." }
|
58
53
|
|
59
|
-
|
54
|
+
results = mysql_connector.query(<<~SQL)
|
60
55
|
SELECT `identifier` FROM `#{migration_table_name}` ORDER BY `identifier` DESC
|
61
56
|
SQL
|
62
57
|
|
63
|
-
|
64
|
-
0
|
65
|
-
else
|
66
|
-
Integer(result.first[:identifier])
|
67
|
-
end
|
58
|
+
results.to_a.map { |result| result[:identifier]&.to_i }
|
68
59
|
end
|
69
60
|
|
70
61
|
def initialize_script_history
|
@@ -80,19 +71,25 @@ module MysqlFramework
|
|
80
71
|
SQL
|
81
72
|
end
|
82
73
|
|
83
|
-
def calculate_pending_scripts(
|
74
|
+
def calculate_pending_scripts(executed_scripts = [])
|
84
75
|
MysqlFramework.logger.debug { "[#{self.class}] - Calculating pending data store scripts." }
|
85
76
|
|
86
|
-
migrations.map(&:new).
|
77
|
+
migrations.map(&:new).reject { |script| executed_scripts.include?(script.identifier) }.sort_by(&:identifier)
|
87
78
|
end
|
88
79
|
|
89
80
|
def table_exists?(table_name)
|
90
81
|
result = mysql_connector.query(<<~SQL)
|
91
82
|
SHOW TABLES LIKE '#{table_name}'
|
92
83
|
SQL
|
84
|
+
|
93
85
|
result.count == 1
|
94
86
|
end
|
95
87
|
|
88
|
+
def drop_all_tables
|
89
|
+
drop_script_history
|
90
|
+
all_tables.each { |table| drop_table(table) }
|
91
|
+
end
|
92
|
+
|
96
93
|
def drop_script_history
|
97
94
|
drop_table(migration_table_name)
|
98
95
|
end
|
@@ -45,22 +45,13 @@ describe MysqlFramework::Scripts::Manager do
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
describe '#
|
49
|
-
it 'drops the script history table and any registered tables' do
|
50
|
-
expect(subject).to receive(:drop_script_history)
|
51
|
-
expect(subject).to receive(:drop_table).with('test')
|
52
|
-
expect(subject).to receive(:drop_table).with('demo')
|
53
|
-
|
54
|
-
subject.drop_all_tables
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
describe '#retrieve_last_executed_script' do
|
48
|
+
describe '#retrieve_executed_scripts' do
|
59
49
|
before(:each) { subject.initialize_script_history }
|
60
50
|
|
61
51
|
context 'when no scripts have been executed' do
|
62
|
-
it 'returns
|
63
|
-
expect(subject.
|
52
|
+
it 'returns an empty array' do
|
53
|
+
expect(subject.retrieve_executed_scripts).to be_a(Array)
|
54
|
+
expect(subject.retrieve_executed_scripts).to be_empty
|
64
55
|
end
|
65
56
|
end
|
66
57
|
|
@@ -69,7 +60,7 @@ describe MysqlFramework::Scripts::Manager do
|
|
69
60
|
after(:each) { subject.drop_script_history }
|
70
61
|
|
71
62
|
it 'returns the last executed script' do
|
72
|
-
expect(subject.
|
63
|
+
expect(subject.retrieve_executed_scripts).to eq([201807031200, 201801011030])
|
73
64
|
end
|
74
65
|
end
|
75
66
|
end
|
@@ -83,22 +74,27 @@ describe MysqlFramework::Scripts::Manager do
|
|
83
74
|
end
|
84
75
|
|
85
76
|
describe '#calculate_pending_scripts' do
|
86
|
-
|
87
|
-
|
88
|
-
|
77
|
+
before(:each) { subject.drop_script_history }
|
78
|
+
|
79
|
+
context 'no migrations have been run' do
|
80
|
+
it 'returns all scripts that are missing in ascending order' do
|
81
|
+
results = subject.calculate_pending_scripts([])
|
89
82
|
|
90
|
-
|
91
|
-
|
92
|
-
|
83
|
+
expect(results.length).to eq(3)
|
84
|
+
expect(results[0]).to be_a(MysqlFramework::Support::Scripts::CreateTestTable)
|
85
|
+
expect(results[1]).to be_a(MysqlFramework::Support::Scripts::CreateDemoTable)
|
86
|
+
expect(results[2]).to be_a(MysqlFramework::Support::Scripts::CreateTestProc)
|
87
|
+
end
|
93
88
|
end
|
94
89
|
|
95
|
-
context '
|
96
|
-
it 'returns
|
97
|
-
timestamp =
|
98
|
-
results = subject.calculate_pending_scripts(timestamp)
|
90
|
+
context 'some migrations have been run' do
|
91
|
+
it 'returns any scripts that are missing in ascending order' do
|
92
|
+
timestamp = 201806021520
|
93
|
+
results = subject.calculate_pending_scripts([timestamp])
|
99
94
|
|
100
95
|
expect(results.length).to eq(2)
|
101
|
-
expect(results[0]).to be_a(MysqlFramework::Support::Scripts::
|
96
|
+
expect(results[0]).to be_a(MysqlFramework::Support::Scripts::CreateTestTable)
|
97
|
+
expect(results[1]).to be_a(MysqlFramework::Support::Scripts::CreateTestProc)
|
102
98
|
end
|
103
99
|
end
|
104
100
|
end
|
@@ -117,6 +113,16 @@ describe MysqlFramework::Scripts::Manager do
|
|
117
113
|
end
|
118
114
|
end
|
119
115
|
|
116
|
+
describe '#drop_all_tables' do
|
117
|
+
it 'drops the script history table and any registered tables' do
|
118
|
+
expect(subject).to receive(:drop_script_history)
|
119
|
+
expect(subject).to receive(:drop_table).with('test')
|
120
|
+
expect(subject).to receive(:drop_table).with('demo')
|
121
|
+
|
122
|
+
subject.drop_all_tables
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
120
126
|
describe '#drop_script_history' do
|
121
127
|
it 'drops the migration script history table' do
|
122
128
|
query = <<~SQL
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mysql_framework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sage
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|