chicagowarehouse 0.3.1 → 0.3.2
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.3.
|
17
|
+
gem.version = "0.3.2"
|
18
18
|
gem.summary = "Ruby Data Warehousing"
|
19
19
|
gem.description = "Simple Data Warehouse toolkit for ruby"
|
20
20
|
gem.author = "Roland Swingler"
|
data/chicagowarehouse.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{chicagowarehouse}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Roland Swingler}]
|
12
|
-
s.date = %q{2012-10-
|
12
|
+
s.date = %q{2012-10-29}
|
13
13
|
s.description = %q{Simple Data Warehouse toolkit for ruby}
|
14
14
|
s.email = %q{roland.swingler@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -38,6 +38,9 @@ module Chicago
|
|
38
38
|
# The table used to generate/store dimension keys.
|
39
39
|
attr_reader :key_table_name
|
40
40
|
|
41
|
+
# Records representing missing or not applicable dimension values.
|
42
|
+
attr_reader :null_records
|
43
|
+
|
41
44
|
# Creates a new Dimension, named +name+.
|
42
45
|
#
|
43
46
|
# @param name the name of the dimension
|
@@ -33,6 +33,17 @@ module Chicago
|
|
33
33
|
@key_name.qualify(table)
|
34
34
|
end
|
35
35
|
|
36
|
+
# Returns the first null record id for this dimension, or 0 if
|
37
|
+
# the dimension has no null records defined.
|
38
|
+
def default_value
|
39
|
+
record = @dimension.null_records.first
|
40
|
+
if record && record[:id]
|
41
|
+
record[:id]
|
42
|
+
else
|
43
|
+
super
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
36
47
|
# @private
|
37
48
|
def kind_of?(klass)
|
38
49
|
klass == Chicago::Schema::Dimension || super
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Chicago::Schema::DimensionReference do
|
4
4
|
before :each do
|
5
|
-
@dimension = Chicago::Schema::Dimension.new(:bar)
|
5
|
+
@dimension = Chicago::Schema::Dimension.new(:bar, :null_records => [{:id => 1}])
|
6
6
|
end
|
7
7
|
|
8
8
|
it "returns columns from the dimension" do
|
@@ -80,6 +80,10 @@ describe Chicago::Schema::DimensionReference do
|
|
80
80
|
it "can override the key selected as the reference" do
|
81
81
|
described_class.new(:foo, @dimension, :key_name => :baz_dimension_id).key_name.should ==:baz_dimension_id
|
82
82
|
end
|
83
|
+
|
84
|
+
it "uses the first null record id as the default value" do
|
85
|
+
described_class.new(:foo, @dimension).default_value.should == 1
|
86
|
+
end
|
83
87
|
|
84
88
|
it "is visitable" do
|
85
89
|
visitor = mock(:visitor)
|
@@ -78,6 +78,11 @@ describe Chicago::Schema::Dimension do
|
|
78
78
|
end.to raise_error(Chicago::UnsafeNullRecordError)
|
79
79
|
end
|
80
80
|
|
81
|
+
it "has null records" do
|
82
|
+
described_class.new(:user).null_records.should be_empty
|
83
|
+
described_class.new(:user, :null_records => [{:id => 1}]).null_records.should == [{:id => 1}]
|
84
|
+
end
|
85
|
+
|
81
86
|
it "can define a natural key" do
|
82
87
|
described_class.new(:user, :natural_key => [:foo, :bar]).
|
83
88
|
natural_key.should == [:foo, :bar]
|
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:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 2
|
10
|
+
version: 0.3.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Roland Swingler
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-10-
|
18
|
+
date: 2012-10-29 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
requirement: &id001 !ruby/object:Gem::Requirement
|