convergence 0.2.3 → 0.2.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 +4 -4
- data/CHANGELOG.md +48 -0
- data/Gemfile.lock +1 -1
- data/README.md +2 -1
- data/lib/convergence/default_parameter/mysql_default_parameter.rb +1 -1
- data/lib/convergence/diff.rb +2 -2
- data/lib/convergence/dumper.rb +27 -11
- data/lib/convergence/version.rb +1 -1
- data/spec/convergence/dumper_spec.rb +5 -5
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7a6273e5e301b4140467d1ffbfa4144cc8aaa1e9
|
|
4
|
+
data.tar.gz: 7525bf62a8d3516f0eb00ccff2f6165d0300af0c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: db1e0e2a7b864f64ec3cccf3b52e681b85f9fd97d8eac57d915e4975d1bceb373b36508c784ddaa799cde6457082e71e5723165caa19f1b8f8fa163d04308541
|
|
7
|
+
data.tar.gz: 7c4aa29eb5cfda6dc6b3a5d0c9a53929b36218aa5e42af4e23ccb8c46c80bf0d6c3abaab622864ded1b86b851e6424dfcc47f49e4777e7eb7957e9cd3ffc4d73
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
## Convergence 0.2.4 (December 20, 2017) ##
|
|
2
|
+
|
|
3
|
+
* Bug Fix default: "" to default: nil does not work fine
|
|
4
|
+
|
|
5
|
+
*nishio-dens*
|
|
6
|
+
|
|
7
|
+
## Convergence 0.2.3 (November 29, 2017) ##
|
|
8
|
+
|
|
9
|
+
* Change default column limit (PR: #31)
|
|
10
|
+
|
|
11
|
+
Example:
|
|
12
|
+
|
|
13
|
+
# Schema
|
|
14
|
+
create_table "sample" do |t|
|
|
15
|
+
t.tinyint :t
|
|
16
|
+
t.smallint :s
|
|
17
|
+
t.mediumint :m
|
|
18
|
+
t.int :i
|
|
19
|
+
t.bigint :b
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Before
|
|
23
|
+
CREATE TABLE `sample` (
|
|
24
|
+
`t` tinyint(3) NOT NULL,
|
|
25
|
+
`s` smallint(5) NOT NULL,
|
|
26
|
+
`m` mediumint(8) NOT NULL,
|
|
27
|
+
`i` int(11) NOT NULL,
|
|
28
|
+
`b` bigint(19) NOT NULL
|
|
29
|
+
) ENGINE=InnoDB ROW_FORMAT=Compact DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;
|
|
30
|
+
|
|
31
|
+
# After
|
|
32
|
+
CREATE TABLE `sample` (
|
|
33
|
+
`t` tinyint(4) NOT NULL,
|
|
34
|
+
`s` smallint(6) NOT NULL,
|
|
35
|
+
`m` mediumint(9) NOT NULL,
|
|
36
|
+
`i` int(11) NOT NULL,
|
|
37
|
+
`b` bigint(20) NOT NULL
|
|
38
|
+
) ENGINE=InnoDB ROW_FORMAT=Compact DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;
|
|
39
|
+
|
|
40
|
+
*yujideveloper*
|
|
41
|
+
|
|
42
|
+
* Change supported ruby version from 2.0.0 to 2.4.1 (PR: #35)
|
|
43
|
+
|
|
44
|
+
*nishio-dens*
|
|
45
|
+
|
|
46
|
+
* Fix Deprecated Warnings (PR: #36)
|
|
47
|
+
|
|
48
|
+
*nishio-dens*
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# Convergence
|
|
2
2
|
|
|
3
|
-
Convergence is a
|
|
3
|
+
Convergence is a pure-Ruby database schema migration tool.
|
|
4
4
|
Currently, This tools is support only MySQL.
|
|
5
5
|
|
|
6
6
|
It defines DB Schema using Convergence DSL(like Rails DSL).
|
|
7
7
|
For more information about Convergence DSL, See below 'Detail About Convergence DSL'.
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
[](https://badge.fury.io/rb/convergence)
|
|
10
11
|
[](https://travis-ci.org/nishio-dens/convergence)
|
|
11
12
|
|
|
12
13
|
## Installation
|
|
@@ -120,7 +120,7 @@ class Convergence::DefaultParameter::MysqlDefaultParameter
|
|
|
120
120
|
def remove_index_default_parameter(table)
|
|
121
121
|
table.indexes.each do |_, va|
|
|
122
122
|
va.options.each do |k, v|
|
|
123
|
-
if !DEFAULT_INDEX_PARAMETERS[k].nil? && DEFAULT_INDEX_PARAMETERS[k].downcase == v.to_s.downcase
|
|
123
|
+
if !DEFAULT_INDEX_PARAMETERS[k].nil? && DEFAULT_INDEX_PARAMETERS[k].to_s.downcase == v.to_s.downcase
|
|
124
124
|
va.options.delete(k)
|
|
125
125
|
end
|
|
126
126
|
end
|
data/lib/convergence/diff.rb
CHANGED
|
@@ -79,12 +79,12 @@ class Convergence::Diff
|
|
|
79
79
|
to_column_option_with_type = (from_column.options.map { |k, _v| { k => nil } }.reduce { |a, e| a.merge(e) } || {})
|
|
80
80
|
.merge(to_column.options)
|
|
81
81
|
.merge(type: to_column.type)
|
|
82
|
-
.map { |k, v| [k, case_sensitive_column?(k) ? v
|
|
82
|
+
.map { |k, v| [k, case_sensitive_column?(k) ? v&.to_s : v&.to_s&.downcase] }
|
|
83
83
|
.to_a
|
|
84
84
|
from_column_option_with_type = from_column
|
|
85
85
|
.options
|
|
86
86
|
.merge(type: from_column.type)
|
|
87
|
-
.map { |k, v| [k, case_sensitive_column?(k) ? v
|
|
87
|
+
.map { |k, v| [k, case_sensitive_column?(k) ? v&.to_s : v&.to_s.downcase] }
|
|
88
88
|
.to_a
|
|
89
89
|
{ column_name => Hash[(to_column_option_with_type - from_column_option_with_type)] }
|
|
90
90
|
end
|
data/lib/convergence/dumper.rb
CHANGED
|
@@ -6,7 +6,7 @@ class Convergence::Dumper
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def dump_table_dsl(table)
|
|
9
|
-
table_argument = ["
|
|
9
|
+
table_argument = [":#{table.table_name}"]
|
|
10
10
|
table_argument << table.table_options.map { |k, v| key_value_text(k, v) }
|
|
11
11
|
dsl = "create_table #{table_argument.flatten.join(', ')} do |t|\n"
|
|
12
12
|
dsl += " #{table.columns.map { |_, column| dump_column(column) }.join("\n ")}"
|
|
@@ -27,33 +27,45 @@ class Convergence::Dumper
|
|
|
27
27
|
private
|
|
28
28
|
|
|
29
29
|
def dump_column(column)
|
|
30
|
-
argument = [%(
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
argument = [%(:#{column.column_name})]
|
|
31
|
+
case [column.type, column.options[:limit]]
|
|
32
|
+
when [:tinyint, '1']
|
|
33
|
+
column_type = "boolean"
|
|
34
|
+
options = column.options.dup
|
|
35
|
+
options.delete(:limit)
|
|
36
|
+
options = options.merge(default: false) if options[:default] == "0"
|
|
37
|
+
options = options.merge(default: true) if options[:default] == "1"
|
|
38
|
+
argument << options.map { |k, v| key_value_text(k, v) }
|
|
39
|
+
else
|
|
40
|
+
column_type = column.type
|
|
41
|
+
argument << column.options.map { |k, v| key_value_text(k, v) }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
"t.#{column_type} #{argument.flatten.join(', ')}"
|
|
33
45
|
end
|
|
34
46
|
|
|
35
47
|
def dump_index(index)
|
|
36
|
-
columns =
|
|
48
|
+
columns = single_or_multiple_symbol(index.index_columns)
|
|
37
49
|
argument = [columns]
|
|
38
50
|
argument << index.options.map { |k, v| key_value_text(k, v) }
|
|
39
51
|
"t.index #{argument.flatten.join(', ')}"
|
|
40
52
|
end
|
|
41
53
|
|
|
42
54
|
def dump_foreign_key(foreign_key)
|
|
43
|
-
columns =
|
|
55
|
+
columns = single_or_multiple_symbol(foreign_key.from_columns)
|
|
44
56
|
argument = [columns]
|
|
45
|
-
argument << [
|
|
46
|
-
argument << ["reference_column: #{
|
|
57
|
+
argument << [key_value_symbol('reference', foreign_key.to_table)]
|
|
58
|
+
argument << ["reference_column: #{single_or_multiple_symbol(foreign_key.to_columns)}"]
|
|
47
59
|
argument << foreign_key.options.map { |k, v| key_value_text(k, v) }
|
|
48
60
|
"t.foreign_key #{argument.flatten.join(', ')}"
|
|
49
61
|
end
|
|
50
62
|
|
|
51
|
-
def
|
|
63
|
+
def single_or_multiple_symbol(values)
|
|
52
64
|
values_array = [values].flatten
|
|
53
65
|
if values_array.size == 1
|
|
54
|
-
|
|
66
|
+
":#{values_array.first}"
|
|
55
67
|
else
|
|
56
|
-
%(#{values})
|
|
68
|
+
%(#{values.map(&:to_sym)})
|
|
57
69
|
end
|
|
58
70
|
end
|
|
59
71
|
|
|
@@ -65,4 +77,8 @@ class Convergence::Dumper
|
|
|
65
77
|
end
|
|
66
78
|
"#{k}: #{value}"
|
|
67
79
|
end
|
|
80
|
+
|
|
81
|
+
def key_value_symbol(k, v)
|
|
82
|
+
"#{k}: :#{v}"
|
|
83
|
+
end
|
|
68
84
|
end
|
data/lib/convergence/version.rb
CHANGED
|
@@ -12,12 +12,12 @@ describe Convergence::Dumper do
|
|
|
12
12
|
end
|
|
13
13
|
let(:table1_dsl) do
|
|
14
14
|
dsl = <<-DSL
|
|
15
|
-
create_table
|
|
16
|
-
t.int
|
|
17
|
-
t.varchar
|
|
15
|
+
create_table :dummy_table, engine: "MyISAM" do |t|
|
|
16
|
+
t.int :id, limit: 11
|
|
17
|
+
t.varchar :name, limit: 100, null: true, comment: "name"
|
|
18
18
|
|
|
19
|
-
t.index
|
|
20
|
-
t.foreign_key
|
|
19
|
+
t.index :name, name: "idx_name"
|
|
20
|
+
t.foreign_key :id, reference: :dummy_ref, reference_column: :id, name: "dummy_table_id_fk"
|
|
21
21
|
end
|
|
22
22
|
DSL
|
|
23
23
|
dsl.strip
|
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.2.
|
|
4
|
+
version: 0.2.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: 2017-
|
|
11
|
+
date: 2017-12-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: mysql2
|
|
@@ -176,6 +176,7 @@ files:
|
|
|
176
176
|
- ".rspec"
|
|
177
177
|
- ".rubocop.yml"
|
|
178
178
|
- ".travis.yml"
|
|
179
|
+
- CHANGELOG.md
|
|
179
180
|
- Gemfile
|
|
180
181
|
- Gemfile.lock
|
|
181
182
|
- Guardfile
|