chicagowarehouse 0.4.4 → 0.4.5

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.4"
17
+ gem.version = "0.4.5"
18
18
  gem.summary = "Ruby Data Warehousing"
19
19
  gem.description = "Simple Data Warehouse toolkit for ruby"
20
20
  gem.author = "Roland Swingler"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "chicagowarehouse"
8
- s.version = "0.4.4"
8
+ s.version = "0.4.5"
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"]
12
- s.date = "2013-07-24"
12
+ s.date = "2013-09-16"
13
13
  s.description = "Simple Data Warehouse toolkit for ruby"
14
14
  s.email = "roland.swingler@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -83,7 +83,7 @@ Gem::Specification.new do |s|
83
83
  s.homepage = "http://github.com/notonthehighstreet/chicago"
84
84
  s.licenses = ["MIT"]
85
85
  s.require_paths = ["lib"]
86
- s.rubygems_version = "1.8.25"
86
+ s.rubygems_version = "1.8.15"
87
87
  s.summary = "Ruby Data Warehousing"
88
88
 
89
89
  if s.respond_to? :specification_version then
@@ -65,5 +65,15 @@ module Chicago::Schema::Builders
65
65
  def has_predetermined_values
66
66
  @options[:predetermined_values] = true
67
67
  end
68
+
69
+ # Defines this dimension as uncountable.
70
+ #
71
+ # By default, dimensions are considered countable entities if they
72
+ # have an original_id column. In some cases, a dimension may be
73
+ # identifiable by this column, but still not semantically be a
74
+ # countable entity.
75
+ def uncountable
76
+ @options[:uncountable] = true
77
+ end
68
78
  end
69
79
  end
@@ -61,6 +61,7 @@ module Chicago
61
61
  @table_name = sprintf(DIMENSION_TABLE_FORMAT, name).to_sym
62
62
  @key_table_name = sprintf(KEY_TABLE_FORMAT, @table_name).to_sym
63
63
  @predetermined_values = !! opts[:predetermined_values]
64
+ @countable = !opts[:uncountable]
64
65
  check_null_records
65
66
  end
66
67
 
@@ -96,6 +97,11 @@ module Chicago
96
97
  !! original_key
97
98
  end
98
99
 
100
+ # Returns true if these dimension entries can be counted.
101
+ def countable?
102
+ @countable && identifiable?
103
+ end
104
+
99
105
  # Returns true if the set of values for this dimension is
100
106
  # pretermined.
101
107
  #
@@ -8,7 +8,7 @@ module Chicago
8
8
  class DimensionReference < Column
9
9
  extend Forwardable
10
10
 
11
- def_delegators :@dimension, :columns, :column_definitions, :identifiers, :main_identifier, :identifiable?, :original_key, :natural_key, :table_name, :[], :key_table_name
11
+ def_delegators :@dimension, :columns, :column_definitions, :identifiers, :main_identifier, :identifiable?, :original_key, :natural_key, :table_name, :[], :key_table_name, :countable?
12
12
 
13
13
  def initialize(name, dimension, opts={})
14
14
  super name, :integer, opts.merge(:min => 0)
@@ -17,6 +17,10 @@ module Chicago
17
17
  @key_name = opts[:key_name] || "#{@name}_dimension_id".to_sym
18
18
  end
19
19
 
20
+ def countable_label
21
+ "No. of #{label.pluralize}"
22
+ end
23
+
20
24
  # Returns the key name of this dimension.
21
25
  def database_name
22
26
  @key_name
@@ -36,6 +36,16 @@ describe Chicago::Schema::DimensionReference do
36
36
  described_class.new(:foo, @dimension).original_key.should == :result
37
37
  end
38
38
 
39
+ it "returns countable from the dimension" do
40
+ @dimension.should_receive(:countable?).and_return(true)
41
+ described_class.new(:foo, @dimension).should be_countable
42
+ end
43
+
44
+ it "has a countable label" do
45
+ described_class.new(:foo, @dimension).countable_label.
46
+ should == "No. of Foos"
47
+ end
48
+
39
49
  it "returns natural_key from the dimension" do
40
50
  @dimension.should_receive(:natural_key).and_return(:result)
41
51
  described_class.new(:foo, @dimension).natural_key.should == :result
@@ -103,6 +103,18 @@ describe Chicago::Schema::Dimension do
103
103
  described_class.new(:user, :columns => [column]).should be_identifiable
104
104
  end
105
105
 
106
+ it "is considered countable if it has an original key [DEPRECATED]" do
107
+ column = stub(:c, :name => :original_id)
108
+ described_class.new(:user, :columns => [column]).should be_countable
109
+ described_class.new(:user, :columns => []).should_not be_countable
110
+ end
111
+
112
+ it "can be marked as uncountable" do
113
+ column = stub(:c, :name => :original_id)
114
+ described_class.new(:user, :columns => [column],
115
+ :uncountable => true).should_not be_countable
116
+ end
117
+
106
118
  it "can have predetermined values" do
107
119
  described_class.new(:countries, :predetermined_values => true).should have_predetermined_values
108
120
  end
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: 7
4
+ hash: 5
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 4
10
- version: 0.4.4
9
+ - 5
10
+ version: 0.4.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Roland Swingler
@@ -15,10 +15,12 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-07-24 00:00:00 Z
18
+ date: 2013-09-16 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- version_requirements: &id001 !ruby/object:Gem::Requirement
21
+ type: :runtime
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
22
24
  none: false
23
25
  requirements:
24
26
  - - ~>
@@ -29,11 +31,11 @@ dependencies:
29
31
  - 0
30
32
  version: "3.0"
31
33
  name: sequel
32
- prerelease: false
33
- type: :runtime
34
- requirement: *id001
34
+ version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
36
+ type: :runtime
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
37
39
  none: false
38
40
  requirements:
39
41
  - - ">="
@@ -45,11 +47,11 @@ dependencies:
45
47
  - 2
46
48
  version: 0.3.2
47
49
  name: sequel_migration_builder
48
- prerelease: false
49
- type: :runtime
50
- requirement: *id002
50
+ version_requirements: *id002
51
51
  - !ruby/object:Gem::Dependency
52
- version_requirements: &id003 !ruby/object:Gem::Requirement
52
+ type: :runtime
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
53
55
  none: false
54
56
  requirements:
55
57
  - - "="
@@ -61,11 +63,11 @@ dependencies:
61
63
  - 1
62
64
  version: 2.8.1
63
65
  name: mysql
64
- prerelease: false
65
- type: :runtime
66
- requirement: *id003
66
+ version_requirements: *id003
67
67
  - !ruby/object:Gem::Dependency
68
- version_requirements: &id004 !ruby/object:Gem::Requirement
68
+ type: :runtime
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
69
71
  none: false
70
72
  requirements:
71
73
  - - ">="
@@ -75,11 +77,11 @@ dependencies:
75
77
  - 0
76
78
  version: "0"
77
79
  name: chronic
78
- prerelease: false
79
- type: :runtime
80
- requirement: *id004
80
+ version_requirements: *id004
81
81
  - !ruby/object:Gem::Dependency
82
- version_requirements: &id005 !ruby/object:Gem::Requirement
82
+ type: :development
83
+ prerelease: false
84
+ requirement: &id005 !ruby/object:Gem::Requirement
83
85
  none: false
84
86
  requirements:
85
87
  - - ">="
@@ -89,11 +91,11 @@ dependencies:
89
91
  - 0
90
92
  version: "0"
91
93
  name: yard
92
- prerelease: false
93
- type: :development
94
- requirement: *id005
94
+ version_requirements: *id005
95
95
  - !ruby/object:Gem::Dependency
96
- version_requirements: &id006 !ruby/object:Gem::Requirement
96
+ type: :development
97
+ prerelease: false
98
+ requirement: &id006 !ruby/object:Gem::Requirement
97
99
  none: false
98
100
  requirements:
99
101
  - - ~>
@@ -104,11 +106,11 @@ dependencies:
104
106
  - 0
105
107
  version: "2.0"
106
108
  name: rspec
107
- prerelease: false
108
- type: :development
109
- requirement: *id006
109
+ version_requirements: *id006
110
110
  - !ruby/object:Gem::Dependency
111
- version_requirements: &id007 !ruby/object:Gem::Requirement
111
+ type: :development
112
+ prerelease: false
113
+ requirement: &id007 !ruby/object:Gem::Requirement
112
114
  none: false
113
115
  requirements:
114
116
  - - ">="
@@ -118,11 +120,11 @@ dependencies:
118
120
  - 0
119
121
  version: "0"
120
122
  name: bundler
121
- prerelease: false
122
- type: :development
123
- requirement: *id007
123
+ version_requirements: *id007
124
124
  - !ruby/object:Gem::Dependency
125
- version_requirements: &id008 !ruby/object:Gem::Requirement
125
+ type: :development
126
+ prerelease: false
127
+ requirement: &id008 !ruby/object:Gem::Requirement
126
128
  none: false
127
129
  requirements:
128
130
  - - ">="
@@ -132,11 +134,11 @@ dependencies:
132
134
  - 0
133
135
  version: "0"
134
136
  name: jeweler
135
- prerelease: false
136
- type: :development
137
- requirement: *id008
137
+ version_requirements: *id008
138
138
  - !ruby/object:Gem::Dependency
139
- version_requirements: &id009 !ruby/object:Gem::Requirement
139
+ type: :development
140
+ prerelease: false
141
+ requirement: &id009 !ruby/object:Gem::Requirement
140
142
  none: false
141
143
  requirements:
142
144
  - - ">="
@@ -146,11 +148,11 @@ dependencies:
146
148
  - 0
147
149
  version: "0"
148
150
  name: rcov
149
- prerelease: false
150
- type: :development
151
- requirement: *id009
151
+ version_requirements: *id009
152
152
  - !ruby/object:Gem::Dependency
153
- version_requirements: &id010 !ruby/object:Gem::Requirement
153
+ type: :development
154
+ prerelease: false
155
+ requirement: &id010 !ruby/object:Gem::Requirement
154
156
  none: false
155
157
  requirements:
156
158
  - - ">="
@@ -160,11 +162,11 @@ dependencies:
160
162
  - 0
161
163
  version: "0"
162
164
  name: flog
163
- prerelease: false
164
- type: :development
165
- requirement: *id010
165
+ version_requirements: *id010
166
166
  - !ruby/object:Gem::Dependency
167
- version_requirements: &id011 !ruby/object:Gem::Requirement
167
+ type: :development
168
+ prerelease: false
169
+ requirement: &id011 !ruby/object:Gem::Requirement
168
170
  none: false
169
171
  requirements:
170
172
  - - ">="
@@ -174,11 +176,11 @@ dependencies:
174
176
  - 0
175
177
  version: "0"
176
178
  name: ZenTest
177
- prerelease: false
178
- type: :development
179
- requirement: *id011
179
+ version_requirements: *id011
180
180
  - !ruby/object:Gem::Dependency
181
- version_requirements: &id012 !ruby/object:Gem::Requirement
181
+ type: :development
182
+ prerelease: false
183
+ requirement: &id012 !ruby/object:Gem::Requirement
182
184
  none: false
183
185
  requirements:
184
186
  - - ">="
@@ -188,9 +190,7 @@ dependencies:
188
190
  - 0
189
191
  version: "0"
190
192
  name: timecop
191
- prerelease: false
192
- type: :development
193
- requirement: *id012
193
+ version_requirements: *id012
194
194
  description: Simple Data Warehouse toolkit for ruby
195
195
  email: roland.swingler@gmail.com
196
196
  executables: []
@@ -292,7 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
292
  requirements: []
293
293
 
294
294
  rubyforge_project:
295
- rubygems_version: 1.8.25
295
+ rubygems_version: 1.8.15
296
296
  signing_key:
297
297
  specification_version: 3
298
298
  summary: Ruby Data Warehousing