chicagowarehouse 0.4.2 → 0.4.3

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