convergence 0.0.3 → 0.0.4

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: 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