convergence 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/convergence.svg)](https://badge.fury.io/rb/convergence)
|
10
11
|
[![Build Status](https://travis-ci.org/nishio-dens/convergence.svg?branch=master)](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
|