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 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