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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9130e6ef267081dbba7479257213ee22b64f07a0
4
- data.tar.gz: abbc5c42a8878c12bff46f826f26d302bcdf6dcd
3
+ metadata.gz: 7a6273e5e301b4140467d1ffbfa4144cc8aaa1e9
4
+ data.tar.gz: 7525bf62a8d3516f0eb00ccff2f6165d0300af0c
5
5
  SHA512:
6
- metadata.gz: 130bbaa624388d12378d21c6d81592cb4ad01773f55c0fc5b61debe45e806fec9c4a1cd419bf66d51ccf8803b69131ca261820b3111b95f49ee757bf235b865d
7
- data.tar.gz: c475b7d7b0db6c995f412e30c46eafe97797ee367b507b5d66112f88a5b8d8172cb45fc90c3e4d646bfbe093c4bb052c51fd3b3e8c00dadae909b5b6d1dc79c7
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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- convergence (0.2.3)
4
+ convergence (0.2.4)
5
5
  diff-lcs
6
6
  diffy
7
7
  mysql2
data/README.md CHANGED
@@ -1,12 +1,13 @@
1
1
  # Convergence
2
2
 
3
- Convergence is a Database Schema management tools.
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
@@ -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.to_s : v.to_s.downcase] }
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.to_s : v.to_s.downcase] }
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
@@ -6,7 +6,7 @@ class Convergence::Dumper
6
6
  end
7
7
 
8
8
  def dump_table_dsl(table)
9
- table_argument = ["\"#{table.table_name}\""]
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 = [%("#{column.column_name}")]
31
- argument << column.options.map { |k, v| key_value_text(k, v) }
32
- "t.#{column.type} #{argument.flatten.join(', ')}"
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 = single_or_multiple_text(index.index_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 = single_or_multiple_text(foreign_key.from_columns)
55
+ columns = single_or_multiple_symbol(foreign_key.from_columns)
44
56
  argument = [columns]
45
- argument << [key_value_text('reference', foreign_key.to_table)]
46
- argument << ["reference_column: #{single_or_multiple_text(foreign_key.to_columns)}"]
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 single_or_multiple_text(values)
63
+ def single_or_multiple_symbol(values)
52
64
  values_array = [values].flatten
53
65
  if values_array.size == 1
54
- %("#{values_array.first}")
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
@@ -1,3 +1,3 @@
1
1
  module Convergence
2
- VERSION = '0.2.3'
2
+ VERSION = '0.2.4'
3
3
  end
@@ -12,12 +12,12 @@ describe Convergence::Dumper do
12
12
  end
13
13
  let(:table1_dsl) do
14
14
  dsl = <<-DSL
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"
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 "name", name: "idx_name"
20
- t.foreign_key "id", reference: "dummy_ref", reference_column: "id", name: "dummy_table_id_fk"
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.3
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-29 00:00:00.000000000 Z
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