sequel_migration_builder 0.4.2 → 0.4.3

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzM5ODM5Y2Q4Y2RkZjFhZjM0ZTE0YjdhZTAxZmRjOWQ5NGYzN2I5OA==
4
+ Njg3ZTNiMGUxODIzYTVhZjUxM2I1MTA1NmY1MzY1NzY4MWMyZjY3NQ==
5
5
  data.tar.gz: !binary |-
6
- MjNhMWJmZTE4OGQwMDg4ZDc2ZjgyZTZiOWE3ZmVkYTYxNzM3MWFjOA==
6
+ Y2QxNmE3M2Y4OTk5MmFmNTkxN2UyNWM3NjA4Y2I1MWVmMTM5MmI0Yg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NGFlZDc2NzQyMzY0MDljMmM0ZWY5YTAxMzkyOTgwMTFmYzE3NmZiMDM3YzJm
10
- NjZkNDJhMWFiNGUxODFiMzM2NmJhZTNmOWFkYTlkY2JmYTQ4MjZiYmIyNDFm
11
- OWIyNGJjZGM2NzMwM2YxM2EwZmYzZDQxN2FkMzkyODQxZTU2Yjk=
9
+ NDYwODNkZDlmOGQ4OTYwM2YyNmU3OGE5ODdhMDM0ZDVjYTA5ZTY5NzQ4ZjI5
10
+ ZDY3NmU0YTA1MThhNDlhNTVhYmVjYzI3ZWVhNzU5NDhhYWExNzA3ZGM5OGIy
11
+ NDhhODQyYzJiMWYzMWQ3NzFmOTBhN2Q3MDJmMDZmMjBhMDA2Zjk=
12
12
  data.tar.gz: !binary |-
13
- MmEwMDM2ZWZjYTZlZTYzNTk2NjQ3MDAxNDcwOGZhNDg4MWE5YTAxOTI4Mjkz
14
- MzBjYWQzYjllZjdjOGRjZGY4ZGFjZTNmYzYzODFmODUwZWEzNDUxZmUyYTgz
15
- ZDUzYzYyMjg0NDU0NDIwYzZkYTRjNjE2MDMxMjM5OTYzMzU2MDY=
13
+ YjFmZDgxZDZmNDJiNGJkYjJkN2Y3MjMyZjFkYWRkM2M4MDZhMWE5NGRlZDc2
14
+ Mzc0MjdlYjZmOTYyYjY3ZWRlMDZhY2JmODgzOGFlNDM0MDFjNTBiODFkYzdj
15
+ M2IyMDYxMTU2ZDkxNTJhNDdlM2M1NzIzODVkYWE1NDc0NTNkNmM=
File without changes
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.2
1
+ 0.4.3
@@ -52,16 +52,29 @@ module Sequel
52
52
  diffs = db_column.diff(new_column)
53
53
 
54
54
  if @immutable_columns && !diffs.empty?
55
- result << :drop_statement
56
- result << :add_statement
55
+ result << new_column.drop_statement
56
+
57
+ statement = new_column.add_statement
58
+ result << (statement.include?(":default") ? statement : statement + ", :default => #{assumed_default(new_column)}")
59
+ result
57
60
  else
58
61
  result << :change_type_statement if [:elements, :column_type, :size, :unsigned].any? {|sym| diffs.include?(sym) }
59
62
  # only need to explicitly set the default if we're not changing the column type.
60
63
  result << :change_default_statement if diffs.include?(:default) && result.empty?
61
64
  result << :change_null_statement if diffs.include?(:null)
65
+
66
+ result.map {|statement| new_column.__send__(statement) }
67
+ end
68
+ end
69
+
70
+ def assumed_default(column)
71
+ if column.numeric?
72
+ 0
73
+ elsif column.column_type == :varchar || column.column_type == :char
74
+ ''
75
+ elsif column.column_type == :boolean
76
+ false
62
77
  end
63
-
64
- result.map {|statement| new_column.__send__(statement) }
65
78
  end
66
79
  end
67
80
  end
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: sequel_migration_builder 0.4.2 ruby lib
5
+ # stub: sequel_migration_builder 0.4.3 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "sequel_migration_builder"
9
- s.version = "0.4.2"
9
+ s.version = "0.4.3"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Roland Swingler"]
14
- s.date = "2014-09-03"
14
+ s.date = "2014-09-08"
15
15
  s.description = "Build Sequel Migrations based on the differences between two schemas"
16
16
  s.email = "roland.swingler@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
+ ".rspec",
23
24
  "CHANGELOG",
24
25
  "LICENSE",
25
26
  "README.rdoc",
@@ -36,7 +37,6 @@ Gem::Specification.new do |s|
36
37
  "spec/db_index_spec.rb",
37
38
  "spec/db_schema_parser_spec.rb",
38
39
  "spec/migration_builder_spec.rb",
39
- "spec/spec.opts",
40
40
  "spec/spec_helper.rb"
41
41
  ]
42
42
  s.homepage = "http://github.com/knaveofdiamonds/sequel_migration_builder"
@@ -80,6 +80,7 @@ describe "Sequel::Schema::AlterTableOperations#build_column_operations" do
80
80
 
81
81
  expect(ops.first).to eql("set_column_type :foo, :enum, :default => nil, :elements => [\"A\", \"B\"]")
82
82
  end
83
+
83
84
  end
84
85
 
85
86
  describe "Sequel::Schema::AlterTableOperations.build" do
@@ -145,4 +146,41 @@ describe "Sequel::Schema::AlterTableOperations.build" do
145
146
  ops = Sequel::Schema::AlterTableOperations.build(table_a,table_b)
146
147
  expect(ops).to eql([])
147
148
  end
149
+
150
+ context "with immutable_columns set" do
151
+ subject {
152
+ Sequel::Schema::AlterTableOperations.new(:immutable_columns => true)
153
+ }
154
+
155
+ it "doesn't change columns that are not different" do
156
+ table_a = {:name => :example_table,
157
+ :columns => [build_column(:name => :foo, :column_type => :integer)]}
158
+ table_b = {:name => :example_table,
159
+ :columns => [build_column(:name => :foo, :column_type => :integer)]}
160
+ ops = subject.build(table_a,table_b)
161
+
162
+ expect(ops).to be_empty
163
+ end
164
+
165
+ it "drops and adds a column with immutable columns set" do
166
+ table_a = {:name => :example_table,
167
+ :columns => [build_column(:name => :foo, :column_type => :integer, :allow_null => true)]}
168
+ table_b = {:name => :example_table,
169
+ :columns => [build_column(:name => :foo, :column_type => :smallint, :allow_null => true)]}
170
+ ops = subject.build(table_a,table_b)
171
+
172
+ expect(ops.size).to eql(2)
173
+ expect(ops.first).to match(/drop_column :foo/)
174
+ expect(ops.last).to match(/add_column :foo/)
175
+ end
176
+
177
+ it "adds an assumed default to NOT NULL columns when changed" do
178
+ table_a = {:name => :example_table,
179
+ :columns => [build_column(:name => :foo, :column_type => :integer, :allow_null => false)]}
180
+ table_b = {:name => :example_table,
181
+ :columns => [build_column(:name => :foo, :column_type => :boolean, :allow_null => false)]}
182
+ ops = subject.build(table_a,table_b)
183
+ expect(ops.last).to match(/:default => false/)
184
+ end
185
+ end
148
186
  end
@@ -201,7 +201,7 @@ change do
201
201
  end
202
202
 
203
203
  alter_table :example_table do
204
- add_column :foo, :integer, :null => false
204
+ add_column :foo, :integer, :null => false, :default => 0
205
205
  end
206
206
  end
207
207
  END
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel_migration_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roland Swingler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-03 00:00:00.000000000 Z
11
+ date: 2014-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -47,6 +47,7 @@ extra_rdoc_files:
47
47
  - README.rdoc
48
48
  files:
49
49
  - .document
50
+ - .rspec
50
51
  - CHANGELOG
51
52
  - LICENSE
52
53
  - README.rdoc
@@ -63,7 +64,6 @@ files:
63
64
  - spec/db_index_spec.rb
64
65
  - spec/db_schema_parser_spec.rb
65
66
  - spec/migration_builder_spec.rb
66
- - spec/spec.opts
67
67
  - spec/spec_helper.rb
68
68
  homepage: http://github.com/knaveofdiamonds/sequel_migration_builder
69
69
  licenses: []