convergence 0.0.7 → 0.0.8

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: b34f5192771fd3c057fa0d11d63f09b3d46ca190
4
- data.tar.gz: 204a4388242da4f35c5e17f3b837438981120b2a
3
+ metadata.gz: 31b591ac5f9afe5f6f73bdbbbb42378929607426
4
+ data.tar.gz: 3a86d9868b9c825d7b4ddc1b3dfb6a5997950897
5
5
  SHA512:
6
- metadata.gz: c76166ec688cfaba2225b8225e4077d0f58901c238b1cc8dff75f9c70537e727f9ceca298c870d7cd1c79b24c5d7641aafe863ca33d4ad3643347a42ca934023
7
- data.tar.gz: d5201425e466cca3cd467a415a07bbe1355729eda222ea715ccb8d313a38f3aa01aba8dca99b50b4383e11d4fd72dd0f83d937ae1aa068a7b20c04e6efa28441
6
+ metadata.gz: bb0c1a6e8f2456dbbfd858efcf3e0bac1ce10d75e6098eea8cc9835d5f247b4e677e51b4b0ddc671e311c7773c9f3ac7ffbedeea39248d5cc6a8679c7bac0fbf
7
+ data.tar.gz: 252b96343e6936c1850446c0ab3b43efc2db1d734fa7b841e64eda9b4644b18f4a053cda78806d2e7e369f948c67c489e51c870af7f8478b503c4b063637960b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- convergence (0.0.7)
4
+ convergence (0.0.8)
5
5
  diff-lcs
6
6
  diffy
7
7
  mysql2
@@ -48,6 +48,6 @@ SET FOREIGN_KEY_CHECKS=1;
48
48
  input_tables_with_full_option =
49
49
  Convergence::DefaultParameter.append_database_default_parameter(input_tables, database_adapter)
50
50
  delta = Convergence::Diff.new.diff(current_tables_with_full_option, input_tables_with_full_option)
51
- sql_generator.generate(input_tables_with_full_option, delta)
51
+ sql_generator.generate(input_tables_with_full_option, delta, current_tables_with_full_option)
52
52
  end
53
53
  end
@@ -119,6 +119,7 @@ class Convergence::Dumper::MysqlSchemaDumper
119
119
  end
120
120
 
121
121
  def parse_indexes(table, table_indexes)
122
+ return if table_indexes.nil?
122
123
  table_indexes.group_by { |r| r['INDEX_NAME'] }.each do |index_name, indexes|
123
124
  type = indexes.first['CONSTRAINT_TYPE']
124
125
  columns = indexes.map { |v| v['COLUMN_NAME'] }
@@ -8,7 +8,10 @@ class SQLGenerator::MysqlGenerator < SQLGenerator
8
8
  }
9
9
  QUOTE_OPTION = [:comment]
10
10
 
11
- def generate(to_table, delta)
11
+ attr_reader :original_table
12
+
13
+ def generate(to_table, delta, original_table)
14
+ @original_table = original_table
12
15
  sqls = []
13
16
  sqls << change_table_sql(to_table, delta)
14
17
  sqls << ['']
@@ -63,7 +66,17 @@ class SQLGenerator::MysqlGenerator < SQLGenerator
63
66
  def alter_change_column_sql(table_name, column_name, change_column_option, to_table)
64
67
  column = to_table[table_name].columns[column_name]
65
68
  column.options.merge!(after: change_column_option[:after]) unless change_column_option[:after].nil?
66
- %(ALTER TABLE `#{table_name}` MODIFY COLUMN #{create_column_sql(column, output_primary_key: true)};)
69
+ sql = ""
70
+ original_column = original_table[table_name].columns[column_name]
71
+ if original_column.options[:primary_key]
72
+ extra = original_column.options[:extra]
73
+ if extra && extra.upcase.include?('AUTO_INCREMENT')
74
+ sql += %(ALTER TABLE `#{table_name}` MODIFY COLUMN #{create_column_sql(original_column, output_auto_increment: false)};\n)
75
+ end
76
+ sql += %(ALTER TABLE `#{table_name}` DROP PRIMARY KEY;\n)
77
+ end
78
+ sql += %(ALTER TABLE `#{table_name}` MODIFY COLUMN #{create_column_sql(column, output_primary_key: true)};)
79
+ sql
67
80
  end
68
81
 
69
82
  def alter_change_table_sql(table_name, change_table_option)
@@ -131,7 +144,7 @@ DROP TABLE `#{table_name}`;
131
144
  end
132
145
  end
133
146
 
134
- def create_column_sql(column, output_primary_key: false)
147
+ def create_column_sql(column, output_primary_key: false, output_auto_increment: true)
135
148
  sql = "`#{column.column_name}`"
136
149
  sql += " #{column.type}"
137
150
  sql += "(#{column.options[:limit]})" unless column.options[:limit].nil?
@@ -159,7 +172,11 @@ DROP TABLE `#{table_name}`;
159
172
  sql += " COMMENT '#{column.options[:comment]}'"
160
173
  end
161
174
  if column.options[:extra]
162
- sql += " #{column.options[:extra].upcase}"
175
+ if output_auto_increment
176
+ sql += " #{column.options[:extra].upcase}"
177
+ else
178
+ sql += " #{column.options[:extra].upcase.sub('AUTO_INCREMENT', '')}"
179
+ end
163
180
  end
164
181
  if column.options.keys.include?(:after)
165
182
  if column.options[:after].nil?
@@ -1,3 +1,3 @@
1
1
  module Convergence
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
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.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shinsuke Nishio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-16 00:00:00.000000000 Z
11
+ date: 2015-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2