chicagowarehouse 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
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