convergence 0.0.3 → 0.0.4

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: 6ea4f99911ec8bb7d35f4360bd8250a352c1770b
4
- data.tar.gz: e3fac7b60fa6d9d4c2763b1edccd5f20c5f018d8
3
+ metadata.gz: cee0b72015626223c127eed7acc9c03bc22d6f43
4
+ data.tar.gz: 6808f1b1410f9d13cc16d262041a8bebce648032
5
5
  SHA512:
6
- metadata.gz: c6e7845828fa110a66878c2caeee56d3c0d9b040708135fde89b7245f4804462331bf6fcc538826d0ab852212ac9cd43b3e2dd6df4f176dda54d89939288e557
7
- data.tar.gz: 18d96bd003a0d6e641bd9ca8e4b4fae0fbf428ace56c72faa344c8561e0bc21861f85257054759710859d06ca25f2562348c8aee04324f17c98fa8f66b863ca3
6
+ metadata.gz: eb06eb3d249a49e916da9504216c66ff5f0de9b7f91245dbdaa17c23d0c6ca855cd0bbb7967e17e1ed8eb47d441dd66de2c4c3e1b3dd30205d36611d049c4de0
7
+ data.tar.gz: f7e76021eda3071e9223ac80c175bfb2b79de681451c3cece17a26c38041013296cec5ba08a86b777c6890c23da63160c36abe8c0bc200de1ad74df5925ff0a5
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- convergence (0.0.3)
4
+ convergence (0.0.4)
5
5
  diff-lcs
6
6
  diffy
7
7
  mysql2
@@ -24,6 +24,12 @@ class SQLGenerator::MysqlGenerator < SQLGenerator
24
24
  change_table = delta[:change_table]
25
25
  results = []
26
26
  change_table.each do |table_name, table_delta|
27
+ table_delta[:remove_foreign_key].each do |index_name, _foreign_key|
28
+ results << alter_remove_foreign_key_sql(table_name, index_name)
29
+ end
30
+ table_delta[:remove_index].each do |index_name, _index|
31
+ results << alter_remove_index_sql(table_name, index_name)
32
+ end
27
33
  table_delta[:remove_column].each do |_column_name, column|
28
34
  results << alter_remove_column_sql(table_name, column)
29
35
  end
@@ -33,15 +39,9 @@ class SQLGenerator::MysqlGenerator < SQLGenerator
33
39
  table_delta[:change_column].each do |column_name, column|
34
40
  results << alter_change_column_sql(table_name, column_name, column, to_table)
35
41
  end
36
- table_delta[:remove_index].each do |index_name, _index|
37
- results << alter_remove_index_sql(table_name, index_name)
38
- end
39
42
  table_delta[:add_index].each do |_index_name, index|
40
43
  results << alter_add_index_sql(table_name, index)
41
44
  end
42
- table_delta[:remove_foreign_key].each do |index_name, _foreign_key|
43
- results << alter_remove_foreign_key_sql(table_name, index_name)
44
- end
45
45
  table_delta[:add_foreign_key].each do |_index_name, foreign_key|
46
46
  results << alter_add_foreign_key_sql(table_name, foreign_key)
47
47
  end
@@ -1,3 +1,3 @@
1
1
  module Convergence
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -0,0 +1,24 @@
1
+ create_table "authors", collate: "utf8_general_ci", comment: "" do |t|
2
+ t.int "id", primary_key: true, extra: "auto_increment"
3
+ t.varchar "name", limit: 110
4
+ t.datetime "created_at", null: true
5
+ t.datetime "updated_at", null: true
6
+
7
+ t.index "created_at", name: "index_authors_on_created_at"
8
+ end
9
+
10
+ create_table "papers", collate: "utf8_general_ci", comment: "Paper" do |t|
11
+ t.int "id", primary_key: true, extra: "auto_increment"
12
+ t.varchar "title1", limit: 300, comment: "Title 1"
13
+ t.varchar "title2", limit: 300, comment: "Title 2"
14
+ t.text "description", null: true, comment: "Description"
15
+ end
16
+
17
+ create_table "paper_authors", collate: "utf8_general_ci", comment: "Paper Author Relation" do |t|
18
+ t.int "id", primary_key: true, extra: "auto_increment"
19
+ t.int "paper_id2", comment: "Paper id"
20
+ t.int "author_id2", comment: "Paper author id"
21
+
22
+ t.foreign_key "author_id2", reference: "authors", reference_column: "id", name: "paper_authors_author_id_fk"
23
+ t.foreign_key "paper_id2", reference: "papers", reference_column: "id", name: "paper_authors_paper_id_fk"
24
+ end
@@ -0,0 +1,22 @@
1
+ create_table "authors", collate: "utf8_general_ci", comment: "" do |t|
2
+ t.int "id", primary_key: true, extra: "auto_increment"
3
+ t.varchar "name", limit: 110
4
+ t.datetime "created_at", null: true
5
+ t.datetime "updated_at", null: true
6
+
7
+ t.index "created_at", name: "index_authors_on_created_at"
8
+ end
9
+
10
+ create_table "papers", collate: "utf8_general_ci", comment: "Paper" do |t|
11
+ t.int "id", primary_key: true, extra: "auto_increment"
12
+ t.varchar "title1", limit: 300, comment: "Title 1"
13
+ t.varchar "title2", limit: 300, comment: "Title 2"
14
+ t.text "description", null: true, comment: "Description"
15
+ end
16
+
17
+ create_table "paper_authors", collate: "utf8_general_ci", comment: "Paper Author Relation" do |t|
18
+ t.int "id", primary_key: true, extra: "auto_increment"
19
+ t.int "paper_id", comment: "Paper id"
20
+ t.int "author_id", comment: "Paper author id"
21
+ end
22
+
@@ -1,3 +1,7 @@
1
+ DROP TABLE IF EXISTS `paper_authors`;
2
+ DROP TABLE IF EXISTS `papers`;
3
+ DROP TABLE IF EXISTS `authors`;
4
+
1
5
  CREATE TABLE `papers` (
2
6
  `id` int(11) NOT NULL AUTO_INCREMENT,
3
7
  `title1` varchar(300) NOT NULL COMMENT 'Title 1',
@@ -1,3 +1,5 @@
1
+ require 'spec_helper'
2
+
1
3
  describe 'Command::Dryrun#execute' do
2
4
  def execute(dsl_path)
3
5
  parse_option = {
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Changeable Foreign key' do
4
+ after(:each) do
5
+ rollback
6
+ end
7
+
8
+ def execute(dsl_path)
9
+ parse_option = {
10
+ apply: true,
11
+ input: File.expand_path("#{File.dirname(__FILE__)}/../fixtures/#{dsl_path}")
12
+ }
13
+ Convergence::Command.new(parse_option, config: mysql_settings).execute
14
+ end
15
+
16
+ describe 'drop foreign key' do
17
+ let(:exec_dsl) { 'drop_foreign_key.schema' }
18
+
19
+ it 'should be drop foreign key' do
20
+ expect { execute(exec_dsl) }.not_to raise_error
21
+ end
22
+ end
23
+
24
+ describe 'change foreign key' do
25
+ let(:exec_dsl) { 'change_foreign_key.schema' }
26
+
27
+ it 'should be drop foreign key' do
28
+ expect { execute(exec_dsl) }.not_to raise_error
29
+ end
30
+ end
31
+ end
data/spec/spec_helper.rb CHANGED
@@ -12,6 +12,21 @@ def mysql_settings
12
12
  Convergence::Config.new(Hash[mysql_settings.map { |k, v| [k.to_sym, v] }])
13
13
  end
14
14
 
15
+ def rollback
16
+ # FIXME But I have no idea to rollback create/drop/alter table of mysql
17
+ sqls = File.open("#{File.dirname(__FILE__)}/fixtures/test_db.sql")
18
+ .read
19
+ .split(';')
20
+ .map(&:strip)
21
+ .reject(&:empty?)
22
+ sqls.each do |sql|
23
+ Convergence::Command.new({}, config: mysql_settings)
24
+ .connector
25
+ .client
26
+ .query("#{sql};")
27
+ end
28
+ end
29
+
15
30
  RSpec.configure do |config|
16
31
  config.filter_run :focus
17
32
  config.run_all_when_everything_filtered = true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: convergence
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shinsuke Nishio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-24 00:00:00.000000000 Z
11
+ date: 2015-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2
@@ -219,11 +219,14 @@ files:
219
219
  - spec/fixtures/add_columns_to_paper.schema
220
220
  - spec/fixtures/add_table.schema
221
221
  - spec/fixtures/change_comment_columns_to_paper.schema
222
+ - spec/fixtures/change_foreign_key.schema
222
223
  - spec/fixtures/change_table_comment_to_paper.schema
224
+ - spec/fixtures/drop_foreign_key.schema
223
225
  - spec/fixtures/drop_table.schema
224
226
  - spec/fixtures/remove_columns_to_paper.schema
225
227
  - spec/fixtures/test_db.sql
226
228
  - spec/integrations/command_dryrun.rb
229
+ - spec/integrations/drop_foreign_key.rb
227
230
  - spec/spec_helper.rb
228
231
  homepage: https://github.com/nishio-dens/convergence
229
232
  licenses:
@@ -259,9 +262,12 @@ test_files:
259
262
  - spec/fixtures/add_columns_to_paper.schema
260
263
  - spec/fixtures/add_table.schema
261
264
  - spec/fixtures/change_comment_columns_to_paper.schema
265
+ - spec/fixtures/change_foreign_key.schema
262
266
  - spec/fixtures/change_table_comment_to_paper.schema
267
+ - spec/fixtures/drop_foreign_key.schema
263
268
  - spec/fixtures/drop_table.schema
264
269
  - spec/fixtures/remove_columns_to_paper.schema
265
270
  - spec/fixtures/test_db.sql
266
271
  - spec/integrations/command_dryrun.rb
272
+ - spec/integrations/drop_foreign_key.rb
267
273
  - spec/spec_helper.rb