ridgepole 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dc9a12435829f7fc6154b970fa7999a33ad0b062
4
- data.tar.gz: 174873096bf770276973d159ac74a91237eb63e7
3
+ metadata.gz: b195dc41a13b87e24223916ac26701adc7cc4cb2
4
+ data.tar.gz: 4d3ffa051d81f4f5b3366afe3106b4f3b592bb3c
5
5
  SHA512:
6
- metadata.gz: e7968a0fb170b70c2227c4e434a6e4b1b33fb2a5f47983281a9f818e2a621c3030729e227f93f73f209783db106044586cb315d21ef3761ee5e35455b7b327fc
7
- data.tar.gz: b4c880bd3e74c435802691258f43f9517d56eb76c436f856a5067ace9975bc9561c8071be21c53e1d79ce91872a7fa57c1247ac36463e57e7f14e03cc24a2403
6
+ metadata.gz: a77bd763ef07424ae3db9870732029ed4a167d336f8517e02e7a7ef99c2a6ab0e306c80fc698837bd27c3d5602f3be5fd57a961e96518713bbc71de88b5d1383
7
+ data.tar.gz: ded7b3fd166e9b64d03e860d2b712ebade9d7bef5fa8eafebc873aafcca047c1ea03f5a5119032e758fa203b81998eda277ad3328c133471c1f248e843e6a82c
@@ -97,6 +97,18 @@ class Ridgepole::DSLParser
97
97
  end
98
98
 
99
99
  def parse(dsl, opts = {})
100
- Context.eval(dsl, opts)
100
+ parsed = Context.eval(dsl, opts)
101
+ check_orphan_index(parsed)
102
+ parsed
103
+ end
104
+
105
+ private
106
+
107
+ def check_orphan_index(parsed)
108
+ parsed.each do |table_name, attrs|
109
+ if attrs.length == 1 and attrs[:indices]
110
+ raise "Table `#{table_name}` to create the index is not defined: #{attrs[:indices].keys.join(',')}"
111
+ end
112
+ end
101
113
  end
102
114
  end
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.2.6'
2
+ VERSION = '0.2.7'
3
3
  end
@@ -0,0 +1,81 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when database is empty' do
3
+ let(:actual_dsl) { '' }
4
+ let(:expected_dsl) {
5
+ <<-RUBY
6
+ create_table "clubs", force: true do |t|
7
+ t.string "name", default: "", null: false
8
+ end
9
+
10
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
+
12
+ create_table "departments", primary_key: "dept_no", force: true do |t|
13
+ t.string "dept_name", limit: 40, null: false
14
+ end
15
+
16
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
17
+
18
+ create_table "dept_emp", id: false, force: true do |t|
19
+ t.integer "emp_no", null: false
20
+ t.string "dept_no", limit: 4, null: false
21
+ t.date "from_date", null: false
22
+ t.date "to_date", null: false
23
+ end
24
+
25
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
26
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
27
+
28
+ create_table "dept_manager", id: false, force: true do |t|
29
+ t.string "dept_no", limit: 4, null: false
30
+ t.integer "emp_no", null: false
31
+ t.date "from_date", null: false
32
+ t.date "to_date", null: false
33
+ end
34
+
35
+ add_index "Xdept_manager", ["dept_no"], name: "dept_no", using: :btree
36
+ add_index "Xdept_manager", ["emp_no"], name: "emp_no", using: :btree
37
+
38
+ create_table "employee_clubs", force: true do |t|
39
+ t.integer "emp_no", unsigned: true, null: false
40
+ t.integer "club_id", unsigned: true, null: false
41
+ end
42
+
43
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
+
45
+ create_table "employees", primary_key: "emp_no", force: true do |t|
46
+ t.date "birth_date", null: false
47
+ t.string "first_name", limit: 14, null: false
48
+ t.string "last_name", limit: 16, null: false
49
+ t.string "gender", limit: 1, null: false
50
+ t.date "hire_date", null: false
51
+ end
52
+
53
+ create_table "salaries", id: false, force: true do |t|
54
+ t.integer "emp_no", null: false
55
+ t.integer "salary", null: false
56
+ t.date "from_date", null: false
57
+ t.date "to_date", null: false
58
+ end
59
+
60
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
61
+
62
+ create_table "titles", id: false, force: true do |t|
63
+ t.integer "emp_no", null: false
64
+ t.string "title", limit: 50, null: false
65
+ t.date "from_date", null: false
66
+ t.date "to_date"
67
+ end
68
+
69
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
+ RUBY
71
+ }
72
+
73
+ subject { client }
74
+
75
+ it {
76
+ expect {
77
+ subject.diff(expected_dsl)
78
+ }.to raise_error('Table `Xdept_manager` to create the index is not defined: dept_no,emp_no')
79
+ }
80
+ end
81
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridgepole
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
@@ -127,6 +127,7 @@ files:
127
127
  - spec/dump/dump_class_method_spec.rb
128
128
  - spec/dump/dump_some_tables_spec.rb
129
129
  - spec/dump/dump_spec.rb
130
+ - spec/migrate/check_orphan_index_spec.rb
130
131
  - spec/migrate/migrate_add_column_spec.rb
131
132
  - spec/migrate/migrate_change_column_spec.rb
132
133
  - spec/migrate/migrate_change_table_option_spec.rb
@@ -182,6 +183,7 @@ test_files:
182
183
  - spec/dump/dump_class_method_spec.rb
183
184
  - spec/dump/dump_some_tables_spec.rb
184
185
  - spec/dump/dump_spec.rb
186
+ - spec/migrate/check_orphan_index_spec.rb
185
187
  - spec/migrate/migrate_add_column_spec.rb
186
188
  - spec/migrate/migrate_change_column_spec.rb
187
189
  - spec/migrate/migrate_change_table_option_spec.rb