convergence 0.1.0 → 0.1.1
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e59c90548033df0d06ce497a7adab3c2b921c58
|
4
|
+
data.tar.gz: 626f2ad1f787eb43eb14ed04879bc371098d969a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48f0400326373ef4948cf104bbf585dc0e3e02e1a2f08da5353ef54b4f776ed36c4a2b6bd994c0b67e04307abfda7f79a8577cfb0c55f6f23f6773a49e6b5f33
|
7
|
+
data.tar.gz: bfb521f59e1cc1cc3599ee0f6df18a55ce54ba9a45fe81728c01fb4080185b28f6efc66e48c14bd572de33138a66118c77e9218e57b4dab18fdda47589886b27
|
data/Gemfile.lock
CHANGED
@@ -54,7 +54,7 @@ class Convergence::Dumper::MysqlSchemaDumper
|
|
54
54
|
def select_index_definitions(database_name)
|
55
55
|
mysql.query("
|
56
56
|
SELECT
|
57
|
-
DISTINCT S.TABLE_NAME, S.COLUMN_NAME, S.NON_UNIQUE, S.INDEX_NAME, S.SEQ_IN_INDEX, S.INDEX_TYPE,
|
57
|
+
DISTINCT S.TABLE_NAME, S.COLUMN_NAME, S.SUB_PART, S.NON_UNIQUE, S.INDEX_NAME, S.SEQ_IN_INDEX, S.INDEX_TYPE,
|
58
58
|
IF(TC.CONSTRAINT_TYPE IS NULL, 'INDEX', TC.CONSTRAINT_TYPE) CONSTRAINT_TYPE,
|
59
59
|
KCU.REFERENCED_TABLE_NAME, KCU.REFERENCED_COLUMN_NAME
|
60
60
|
FROM
|
@@ -132,6 +132,8 @@ class Convergence::Dumper::MysqlSchemaDumper
|
|
132
132
|
when 'INDEX', 'UNIQUE'
|
133
133
|
options = { name: index_name, type: indexes.first['INDEX_TYPE'] }
|
134
134
|
options.merge!(unique: true) if type == 'UNIQUE'
|
135
|
+
length = indexes.reject { |v| v['SUB_PART'].nil? }.reduce({}) { |a, e| a[e['COLUMN_NAME']] = e['SUB_PART']; a }
|
136
|
+
options.merge!(length: length) unless length.empty?
|
135
137
|
table.index(columns, options)
|
136
138
|
when 'FOREIGN KEY'
|
137
139
|
to_table = indexes.first['REFERENCED_TABLE_NAME']
|
data/lib/convergence/index.rb
CHANGED
@@ -5,5 +5,31 @@ class Convergence::Index
|
|
5
5
|
@index_name = index_name
|
6
6
|
@index_columns = [index_columns].flatten.map(&:to_s)
|
7
7
|
@options = { name: @index_name }.merge(options)
|
8
|
+
length = @options[:length]
|
9
|
+
case length
|
10
|
+
when Hash
|
11
|
+
@options[:length] = Hash[length.map { |k, v| [k.to_s, v] }]
|
12
|
+
when Fixnum
|
13
|
+
@options[:length] = Hash[@index_columns.map { |col| [col, length] }]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def quoted_columns
|
18
|
+
option_strings = Hash[@index_columns.map { |name| [name, ''] }]
|
19
|
+
option_strings = add_index_length(option_strings, @index_columns, @options)
|
20
|
+
@index_columns.map { |name| quote_column_name(name) + option_strings[name] }
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def quote_column_name(name)
|
26
|
+
"`#{name.to_s.gsub('`', '``')}`"
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_index_length(option_strings, column_names, options = {})
|
30
|
+
if length = options[:length]
|
31
|
+
column_names.each { |name| option_strings[name] += "(#{length[name]})" if length.has_key?(name) && !length[name].nil? }
|
32
|
+
end
|
33
|
+
option_strings
|
8
34
|
end
|
9
35
|
end
|
@@ -99,7 +99,7 @@ class SQLGenerator::MysqlGenerator < SQLGenerator
|
|
99
99
|
def alter_add_index_sql(table_name, index)
|
100
100
|
sql = 'CREATE'
|
101
101
|
sql += ' UNIQUE' if index.options[:unique]
|
102
|
-
sql += " INDEX `#{index.index_name}` ON `#{table_name}`(#{index.
|
102
|
+
sql += " INDEX `#{index.index_name}` ON `#{table_name}`(#{index.quoted_columns.join(',')});"
|
103
103
|
sql
|
104
104
|
end
|
105
105
|
|
data/lib/convergence/version.rb
CHANGED
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.1.
|
4
|
+
version: 0.1.1
|
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-
|
11
|
+
date: 2015-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mysql2
|