chicagowarehouse 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.
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.4.2"
17
+ gem.version = "0.4.3"
18
18
  gem.summary = "Ruby Data Warehousing"
19
19
  gem.description = "Simple Data Warehouse toolkit for ruby"
20
20
  gem.author = "Roland Swingler"
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "chicagowarehouse"
8
- s.version = "0.4.2"
8
+ s.version = "0.4.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Roland Swingler"]
@@ -89,7 +89,7 @@ module Chicago
89
89
  indexes = @table.columns.select(&:indexed?).inject({}) do |hsh, d|
90
90
  hsh.merge("#{d.name}_idx".to_sym => {
91
91
  :columns => d.database_name,
92
- :unique => false})
92
+ :unique => d.unique?})
93
93
  end
94
94
  indexes.merge!(natural_key_index) if @table.natural_key
95
95
  indexes
@@ -28,7 +28,6 @@ module Chicago
28
28
  when :string then string_type(column.min, column.max)
29
29
  when :money then :decimal
30
30
  when :percent then :decimal
31
- when :hash then :binary
32
31
  else
33
32
  column.column_type
34
33
  end
@@ -53,8 +53,9 @@ module Chicago
53
53
  @default = @opts[:default]
54
54
  @descriptive = !! @opts[:descriptive]
55
55
  @internal = @opts.has_key?(:internal) ? !! @opts[:internal] :
56
- column_type == :hash
57
- @unique = !! @opts[:unique]
56
+ column_type == :binary
57
+ @unique = @opts.has_key?(:unique) ? !! @opts[:unique] :
58
+ column_type == :binary
58
59
  @optional = !! (@opts.has_key?(:optional) ? @opts[:optional] :
59
60
  @opts[:null])
60
61
  end
@@ -161,7 +162,7 @@ module Chicago
161
162
 
162
163
  # Returns true if the column stores a binary value.
163
164
  def binary?
164
- @binary ||= [:binary, :hash].include?(column_type)
165
+ @binary ||= :binary == column_type
165
166
  end
166
167
 
167
168
  def hash #:nodoc:
@@ -208,7 +209,7 @@ module Chicago
208
209
  [12,2]
209
210
  elsif column_type == :percent
210
211
  [6,3]
211
- elsif column_type == :hash
212
+ elsif column_type == :binary
212
213
  16
213
214
  end
214
215
  end
@@ -31,11 +31,6 @@ shared_examples_for "All DB type converters" do
31
31
  @tc.db_type(column).should == :decimal
32
32
  end
33
33
 
34
- it "should return :binary for a hash column type" do
35
- column = Schema::Column.new(:id, :hash)
36
- @tc.db_type(column).should == :binary
37
- end
38
-
39
34
  it "should assume any other type is a database type and return it" do
40
35
  column = Schema::Column.new(:id, :foo)
41
36
  @tc.db_type(column).should == :foo
@@ -120,13 +120,13 @@ describe Chicago::Database::SchemaGenerator do
120
120
  columns do
121
121
  string :foo, :descriptive => true
122
122
  string :bar
123
- string :baz
123
+ string :baz, :unique => true
124
124
  end
125
125
  end
126
126
 
127
127
  expected = {
128
128
  :bar_idx => {:columns => :bar, :unique => false},
129
- :baz_idx => {:columns => :baz, :unique => false}
129
+ :baz_idx => {:columns => :baz, :unique => true}
130
130
  }
131
131
  subject.visit_dimension(@dimension)[:dimension_user][:indexes].should == expected
132
132
  end
data/spec/query_spec.rb CHANGED
@@ -423,35 +423,35 @@ describe Chicago::Query do
423
423
  end
424
424
 
425
425
  it "can filter based on starts with" do
426
- @q.filter({:column => "sales.product.sku", :value => "123", :op => :sw}).dataset.sql.should =~ /WHERE \(`product`\.`sku` LIKE '123%'\)/
426
+ @q.filter({:column => "sales.product.sku", :value => "123", :op => :sw}).dataset.sql.should =~ /WHERE \(`product`\.`sku` LIKE '123%'( ESCAPE '.+')?\)/
427
427
  end
428
428
 
429
429
  it "can filter based on 'starts with' with multiple values" do
430
- @q.filter({:column => "sales.product.sku", :value => ["123","AB"], :op => :sw}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` LIKE '123%'\) OR \(`product`\.`sku` LIKE 'AB%'\)\)/
430
+ @q.filter({:column => "sales.product.sku", :value => ["123","AB"], :op => :sw}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` LIKE '123%'( ESCAPE '.+')?\) OR \(`product`\.`sku` LIKE 'AB%'( ESCAPE '.+')?\)\)/
431
431
  end
432
432
 
433
433
  it "can filter based on not starts with" do
434
- @q.filter({:column => "sales.product.sku", :value => "123", :op => :nsw}).dataset.sql.should =~ /WHERE \(`product`\.`sku` NOT LIKE '123%'\)/
434
+ @q.filter({:column => "sales.product.sku", :value => "123", :op => :nsw}).dataset.sql.should =~ /WHERE \(`product`\.`sku` NOT LIKE '123%'( ESCAPE '.+')?\)/
435
435
  end
436
436
 
437
437
  it "can filter based on 'not starts with' with multiple values" do
438
- @q.filter({:column => "sales.product.sku", :value => ["123","AB"], :op => :nsw}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` NOT LIKE '123%'\) AND \(`product`\.`sku` NOT LIKE 'AB%'\)\)/
438
+ @q.filter({:column => "sales.product.sku", :value => ["123","AB"], :op => :nsw}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` NOT LIKE '123%'( ESCAPE '.+')?\) AND \(`product`\.`sku` NOT LIKE 'AB%'( ESCAPE '.+')?\)\)/
439
439
  end
440
440
 
441
441
  it "can filter based on contains" do
442
- @q.filter({:column => "sales.product.sku", :value => "123", :op => :con}).dataset.sql.should =~ /WHERE \(`product`\.`sku` LIKE '%123%'\)/
442
+ @q.filter({:column => "sales.product.sku", :value => "123", :op => :con}).dataset.sql.should =~ /WHERE \(`product`\.`sku` LIKE '%123%'( ESCAPE '.+')?\)/
443
443
  end
444
444
 
445
445
  it "can filter based on not contains" do
446
- @q.filter({:column => "sales.product.sku", :value => "123", :op => :ncon}).dataset.sql.should =~ /WHERE \(`product`\.`sku` NOT LIKE '%123%'\)/
446
+ @q.filter({:column => "sales.product.sku", :value => "123", :op => :ncon}).dataset.sql.should =~ /WHERE \(`product`\.`sku` NOT LIKE '%123%'( ESCAPE '.+')?\)/
447
447
  end
448
448
 
449
449
  it "can filter based on multiple contains" do
450
- @q.filter({:column => "sales.product.sku", :value => ["123", "AB", "foo"], :op => :con}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` LIKE '%123%'\) OR \(`product`\.`sku` LIKE '%AB%'\) OR \(`product`\.`sku` LIKE '%foo%'\)\)/
450
+ @q.filter({:column => "sales.product.sku", :value => ["123", "AB", "foo"], :op => :con}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` LIKE '%123%'( ESCAPE '.+')?\) OR \(`product`\.`sku` LIKE '%AB%'( ESCAPE '.+')?\) OR \(`product`\.`sku` LIKE '%foo%'( ESCAPE '.+')?\)\)/
451
451
  end
452
452
 
453
453
  it "can filter based on multiple contains" do
454
- @q.filter({:column => "sales.product.sku", :value => ["123", "AB", "foo"], :op => :ncon}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` NOT LIKE '%123%'\) AND \(`product`\.`sku` NOT LIKE '%AB%'\) AND \(`product`\.`sku` NOT LIKE '%foo%'\)\)/
454
+ @q.filter({:column => "sales.product.sku", :value => ["123", "AB", "foo"], :op => :ncon}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` NOT LIKE '%123%'( ESCAPE '.+')?\) AND \(`product`\.`sku` NOT LIKE '%AB%'( ESCAPE '.+')?\) AND \(`product`\.`sku` NOT LIKE '%foo%'( ESCAPE '.+')?\)\)/
455
455
  end
456
456
 
457
457
  it "does not join the base table when filtering" do
@@ -158,15 +158,15 @@ describe Chicago::Schema::Column do
158
158
  end
159
159
 
160
160
  it "is binary if a hash" do
161
- described_class.new(:foo, :hash).should be_binary
161
+ described_class.new(:foo, :binary).should be_binary
162
162
  end
163
163
 
164
- it "is nullable by default if a hash" do
165
- described_class.new(:foo, :hash).should be_null
164
+ it "is nullable by default if binary" do
165
+ described_class.new(:foo, :binary).should be_null
166
166
  end
167
167
 
168
- it "is internal by default if a hash" do
169
- described_class.new(:foo, :hash).should be_internal
168
+ it "is internal by default if binary" do
169
+ described_class.new(:foo, :binary).should be_internal
170
170
  end
171
171
 
172
172
  it "is visitable" do
@@ -214,8 +214,9 @@ describe "Chicago::Schema::Column#to_hash" do
214
214
  Chicago::Schema::Column.new(:some_value, :money).to_hash[:size].should == [12,2]
215
215
  end
216
216
 
217
- it "should have a default :size of 16 for hash types" do
218
- Chicago::Schema::Column.new(:some_value, :hash).to_hash[:size].should == 16
217
+ it "should have a default :size of 16 for binary types" do
218
+ Chicago::Schema::Column.new(:some_value, :binary).
219
+ to_hash[:size].should == 16
219
220
  end
220
221
 
221
222
  it "should be unsigned by default if a percentage" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chicagowarehouse
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 2
10
- version: 0.4.2
9
+ - 3
10
+ version: 0.4.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Roland Swingler
@@ -28,10 +28,10 @@ dependencies:
28
28
  - 3
29
29
  - 0
30
30
  version: "3.0"
31
- requirement: *id001
32
- type: :runtime
33
- prerelease: false
34
31
  name: sequel
32
+ prerelease: false
33
+ type: :runtime
34
+ requirement: *id001
35
35
  - !ruby/object:Gem::Dependency
36
36
  version_requirements: &id002 !ruby/object:Gem::Requirement
37
37
  none: false
@@ -44,10 +44,10 @@ dependencies:
44
44
  - 3
45
45
  - 2
46
46
  version: 0.3.2
47
- requirement: *id002
48
- type: :runtime
49
- prerelease: false
50
47
  name: sequel_migration_builder
48
+ prerelease: false
49
+ type: :runtime
50
+ requirement: *id002
51
51
  - !ruby/object:Gem::Dependency
52
52
  version_requirements: &id003 !ruby/object:Gem::Requirement
53
53
  none: false
@@ -60,10 +60,10 @@ dependencies:
60
60
  - 8
61
61
  - 1
62
62
  version: 2.8.1
63
- requirement: *id003
64
- type: :runtime
65
- prerelease: false
66
63
  name: mysql
64
+ prerelease: false
65
+ type: :runtime
66
+ requirement: *id003
67
67
  - !ruby/object:Gem::Dependency
68
68
  version_requirements: &id004 !ruby/object:Gem::Requirement
69
69
  none: false
@@ -74,10 +74,10 @@ dependencies:
74
74
  segments:
75
75
  - 0
76
76
  version: "0"
77
- requirement: *id004
78
- type: :runtime
79
- prerelease: false
80
77
  name: chronic
78
+ prerelease: false
79
+ type: :runtime
80
+ requirement: *id004
81
81
  - !ruby/object:Gem::Dependency
82
82
  version_requirements: &id005 !ruby/object:Gem::Requirement
83
83
  none: false
@@ -88,10 +88,10 @@ dependencies:
88
88
  segments:
89
89
  - 0
90
90
  version: "0"
91
- requirement: *id005
92
- type: :development
93
- prerelease: false
94
91
  name: yard
92
+ prerelease: false
93
+ type: :development
94
+ requirement: *id005
95
95
  - !ruby/object:Gem::Dependency
96
96
  version_requirements: &id006 !ruby/object:Gem::Requirement
97
97
  none: false
@@ -103,10 +103,10 @@ dependencies:
103
103
  - 2
104
104
  - 0
105
105
  version: "2.0"
106
- requirement: *id006
107
- type: :development
108
- prerelease: false
109
106
  name: rspec
107
+ prerelease: false
108
+ type: :development
109
+ requirement: *id006
110
110
  - !ruby/object:Gem::Dependency
111
111
  version_requirements: &id007 !ruby/object:Gem::Requirement
112
112
  none: false
@@ -117,10 +117,10 @@ dependencies:
117
117
  segments:
118
118
  - 0
119
119
  version: "0"
120
- requirement: *id007
121
- type: :development
122
- prerelease: false
123
120
  name: bundler
121
+ prerelease: false
122
+ type: :development
123
+ requirement: *id007
124
124
  - !ruby/object:Gem::Dependency
125
125
  version_requirements: &id008 !ruby/object:Gem::Requirement
126
126
  none: false
@@ -131,10 +131,10 @@ dependencies:
131
131
  segments:
132
132
  - 0
133
133
  version: "0"
134
- requirement: *id008
135
- type: :development
136
- prerelease: false
137
134
  name: jeweler
135
+ prerelease: false
136
+ type: :development
137
+ requirement: *id008
138
138
  - !ruby/object:Gem::Dependency
139
139
  version_requirements: &id009 !ruby/object:Gem::Requirement
140
140
  none: false
@@ -145,10 +145,10 @@ dependencies:
145
145
  segments:
146
146
  - 0
147
147
  version: "0"
148
- requirement: *id009
149
- type: :development
150
- prerelease: false
151
148
  name: rcov
149
+ prerelease: false
150
+ type: :development
151
+ requirement: *id009
152
152
  - !ruby/object:Gem::Dependency
153
153
  version_requirements: &id010 !ruby/object:Gem::Requirement
154
154
  none: false
@@ -159,10 +159,10 @@ dependencies:
159
159
  segments:
160
160
  - 0
161
161
  version: "0"
162
- requirement: *id010
163
- type: :development
164
- prerelease: false
165
162
  name: flog
163
+ prerelease: false
164
+ type: :development
165
+ requirement: *id010
166
166
  - !ruby/object:Gem::Dependency
167
167
  version_requirements: &id011 !ruby/object:Gem::Requirement
168
168
  none: false
@@ -173,10 +173,10 @@ dependencies:
173
173
  segments:
174
174
  - 0
175
175
  version: "0"
176
- requirement: *id011
177
- type: :development
178
- prerelease: false
179
176
  name: ZenTest
177
+ prerelease: false
178
+ type: :development
179
+ requirement: *id011
180
180
  - !ruby/object:Gem::Dependency
181
181
  version_requirements: &id012 !ruby/object:Gem::Requirement
182
182
  none: false
@@ -187,10 +187,10 @@ dependencies:
187
187
  segments:
188
188
  - 0
189
189
  version: "0"
190
- requirement: *id012
191
- type: :development
192
- prerelease: false
193
190
  name: timecop
191
+ prerelease: false
192
+ type: :development
193
+ requirement: *id012
194
194
  description: Simple Data Warehouse toolkit for ruby
195
195
  email: roland.swingler@gmail.com
196
196
  executables: []