chicagowarehouse 0.6.0 → 0.6.1

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
- NmI5NTE0ZmI4MTJhZDc3MjE2YTkzMTM5NWZhY2M5MDIxMTBjODI1Yg==
4
+ MmViNTc2MjUzYTFiNjI0NDZmODM2Y2Y0ZDQ2N2ZmYjE0Y2MwNzFjYw==
5
5
  data.tar.gz: !binary |-
6
- MGM2YjI2ZWFkNzhlMzI3NzM0MmY0YjgyMGQ5MjdhYzYxNGQ3ZWM1MQ==
6
+ YzRlNjA5MjEzYjQ5NzBlZjg3MDBhNjU1NjI5Mzk5NDNkN2I5M2Q0OA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Y2MwMDQ2M2M4NTdiMzE0MzY0MjAwOWU4YmYwYzI5ZjI0NDdhYTU2ZTU3NGQw
10
- OThiZjZiZjFmYWYyOGZmYzdkY2EyZjZiYzRjYjE2OWI5Y2ZlNmZiZDNjOWQy
11
- NDIwZTZhNGMwYjAxNWJkMTJjZmQ3NDAzNTdkMWVjZDlmMjgxMWQ=
9
+ NWUwYzE3ZDIwYWNjYjE4YWE1MjU5NWU0ZDJiNjE0ZDZlMGU3YmQ4ZjJkNjJh
10
+ Nzg2MWU1Njk4YmI5ZDE0ZjQ4ZTY2M2FlZTIzMDQ5NDdiMWFiN2Q1NzgwMGVm
11
+ ZWYwZTA3MDE3MDMxM2Q0MWFkYzM3ZDcwMjY0ZWVlOTNiNmJkZTE=
12
12
  data.tar.gz: !binary |-
13
- NzQ1YTA5NjM4NWVlMmU4YmJhMTM3YjhlMzQ5MzgwMWY4YmEwZmU2MTliYzFk
14
- OWRmNDAwMDQwNWY1NWFkMzVkODlhYjZiM2U1MGNjZGI0OWQ3ZTViMWQ4ZDg1
15
- NDYyMzBjZDA5NzU4NDBkOGE1NTQ2OGM1NGJlZDQ0ZTNkMzJkZGM=
13
+ YzgxZGY5YTg1NTM1YTk1OTFmZGJjMGFjMjJkOWViNTE3MjFmNTU0MGRhY2Uy
14
+ NzZjMDYwNzRlMmViYTliOTU1MmM1OWEzNjgxNTdlZjQ1MzhlNDJjODdhMDY4
15
+ NTJhMzE0NTJlN2QyM2Q1Njc4MWY3NDAxODIyYjE3Yjk4YmUzODM=
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gem "sequel", ">= 4.7"
4
- gem "sequel_migration_builder", ">= 0.4.0"
4
+ gem "sequel_migration_builder", ">= 0.4.1"
5
5
  gem "chronic"
6
6
 
7
7
  group :development do
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ require 'rake'
14
14
  require 'jeweler'
15
15
  Jeweler::Tasks.new do |gem|
16
16
  gem.name = "chicagowarehouse"
17
- gem.version = "0.6.0"
17
+ gem.version = "0.6.1"
18
18
  gem.summary = "Ruby Data Warehousing"
19
19
  gem.description = "Simple Data Warehouse toolkit for ruby"
20
20
  gem.author = "Roland Swingler"
@@ -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: chicagowarehouse 0.6.0 ruby lib
5
+ # stub: chicagowarehouse 0.6.1 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "chicagowarehouse"
9
- s.version = "0.6.0"
9
+ s.version = "0.6.1"
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-01"
14
+ s.date = "2014-09-02"
15
15
  s.description = "Simple Data Warehouse toolkit for ruby"
16
16
  s.email = "roland.swingler@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -91,7 +91,7 @@ Gem::Specification.new do |s|
91
91
 
92
92
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
93
93
  s.add_runtime_dependency(%q<sequel>, [">= 4.7"])
94
- s.add_runtime_dependency(%q<sequel_migration_builder>, [">= 0.4.0"])
94
+ s.add_runtime_dependency(%q<sequel_migration_builder>, [">= 0.4.1"])
95
95
  s.add_runtime_dependency(%q<chronic>, [">= 0"])
96
96
  s.add_development_dependency(%q<mysql2>, [">= 0"])
97
97
  s.add_development_dependency(%q<yard>, [">= 0"])
@@ -103,7 +103,7 @@ Gem::Specification.new do |s|
103
103
  s.add_development_dependency(%q<timecop>, [">= 0"])
104
104
  else
105
105
  s.add_dependency(%q<sequel>, [">= 4.7"])
106
- s.add_dependency(%q<sequel_migration_builder>, [">= 0.4.0"])
106
+ s.add_dependency(%q<sequel_migration_builder>, [">= 0.4.1"])
107
107
  s.add_dependency(%q<chronic>, [">= 0"])
108
108
  s.add_dependency(%q<mysql2>, [">= 0"])
109
109
  s.add_dependency(%q<yard>, [">= 0"])
@@ -116,7 +116,7 @@ Gem::Specification.new do |s|
116
116
  end
117
117
  else
118
118
  s.add_dependency(%q<sequel>, [">= 4.7"])
119
- s.add_dependency(%q<sequel_migration_builder>, [">= 0.4.0"])
119
+ s.add_dependency(%q<sequel_migration_builder>, [">= 0.4.1"])
120
120
  s.add_dependency(%q<chronic>, [">= 0"])
121
121
  s.add_dependency(%q<mysql2>, [">= 0"])
122
122
  s.add_dependency(%q<yard>, [">= 0"])
@@ -16,17 +16,33 @@ module Chicago
16
16
  def self.for_db(db)
17
17
  if db.database_type == :mysql
18
18
  MysqlStrategy.new
19
- elsif db.database_type == :postgres && db.opts[:adapter] == "redshift"
19
+ elsif db.database_type == :postgres &&
20
+ db.opts[:adapter] == "redshift"
20
21
  RedshiftStrategy.new
21
22
  else
22
23
  self.new
23
24
  end
24
25
  end
25
26
 
27
+ # Returns the definition of the column which should be used as
28
+ # the primary id column.
29
+ def id_column
30
+ {
31
+ :name => :id,
32
+ :column_type => :integer,
33
+ :unsigned => true
34
+ }
35
+ end
36
+
37
+ # Returns options to be passed to the Migration Builder.
38
+ #
39
+ # Empty by default, may be overridden by subclasses for specific
40
+ # databases.
26
41
  def migration_options
27
42
  {}
28
43
  end
29
44
 
45
+ # Returns the hash of the column.
30
46
  def column_hash(column)
31
47
  hsh = column.to_hash.merge(:column_type => db_type(column))
32
48
  hsh.delete(:elements) if hsh.has_key?(:elements)
@@ -98,9 +114,17 @@ module Chicago
98
114
  {:separate_alter_table_statements => true, :immutable_columns => true}
99
115
  end
100
116
 
117
+ def id_column
118
+ {
119
+ :name => :id,
120
+ :column_type => :integer,
121
+ :unsigned => false
122
+ }
123
+ end
124
+
101
125
  def column_hash(column)
102
126
  hsh = super(column)
103
-
127
+ hsh.delete(:unsigned)
104
128
  if column.column_type == :string && hsh[:size]
105
129
  # Redshift column sizes are in bytes, not characters, so
106
130
  # increase to 4 bytes per-char for UTF-8 reasons.
@@ -110,6 +134,17 @@ module Chicago
110
134
  hsh
111
135
  end
112
136
 
137
+ def db_type(column)
138
+ t = super(column)
139
+
140
+ case t
141
+ when :year then :smallint
142
+ when :binary then :varchar
143
+ else
144
+ t
145
+ end
146
+ end
147
+
113
148
  # Redshift does not support indexes, so do not output any.
114
149
  def indexes(table)
115
150
  []
@@ -42,11 +42,7 @@ module Chicago
42
42
  :primary_key => [:id],
43
43
  :table_options => @type_converter.table_options,
44
44
  :indexes => @type_converter.indexes(table),
45
- :columns => [{
46
- :name => :id,
47
- :column_type => :integer,
48
- :unsigned => true
49
- }]
45
+ :columns => [@type_converter.id_column]
50
46
  }
51
47
 
52
48
  t[:columns] += table.columns.reject(&:calculated?).
@@ -81,6 +81,28 @@ describe "Generic DbTypeConverter" do
81
81
  @tc.db_type(column).should == expected_db_type
82
82
  end
83
83
  end
84
+
85
+ it "should have an unsigned integer id column" do
86
+ @tc.id_column.should == {
87
+ :name => :id,
88
+ :column_type => :integer
89
+ :unsigned => true
90
+ }
91
+ end
92
+ end
93
+
94
+ describe Chicago::Database::RedshiftStrategy do
95
+ before :each do
96
+ @tc = Database::RedshiftStrategy.new
97
+ end
98
+
99
+ it "should have an integer id column (not unsigned)" do
100
+ @tc.id_column.should == {
101
+ :name => :id,
102
+ :column_type => :integer
103
+ :unsigned => false
104
+ }
105
+ end
84
106
  end
85
107
 
86
108
  describe Chicago::Database::MysqlStrategy do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chicagowarehouse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
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-01 00:00:00.000000000 Z
11
+ date: 2014-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.4.0
33
+ version: 0.4.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.4.0
40
+ version: 0.4.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: chronic
43
43
  requirement: !ruby/object:Gem::Requirement