ridgepole 0.2.6 → 0.2.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
  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