chicagowarehouse 0.6.0 → 0.6.1
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.
- checksums.yaml +8 -8
- data/Gemfile +1 -1
- data/Rakefile +1 -1
- data/chicagowarehouse.gemspec +6 -6
- data/lib/chicago/database/concrete_schema_strategies.rb +37 -2
- data/lib/chicago/database/schema_generator.rb +1 -5
- data/spec/database/concrete_schema_strategies.rb +22 -0
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
MmViNTc2MjUzYTFiNjI0NDZmODM2Y2Y0ZDQ2N2ZmYjE0Y2MwNzFjYw==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
YzRlNjA5MjEzYjQ5NzBlZjg3MDBhNjU1NjI5Mzk5NDNkN2I5M2Q0OA==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
NWUwYzE3ZDIwYWNjYjE4YWE1MjU5NWU0ZDJiNjE0ZDZlMGU3YmQ4ZjJkNjJh
|
|
10
|
+
Nzg2MWU1Njk4YmI5ZDE0ZjQ4ZTY2M2FlZTIzMDQ5NDdiMWFiN2Q1NzgwMGVm
|
|
11
|
+
ZWYwZTA3MDE3MDMxM2Q0MWFkYzM3ZDcwMjY0ZWVlOTNiNmJkZTE=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
YzgxZGY5YTg1NTM1YTk1OTFmZGJjMGFjMjJkOWViNTE3MjFmNTU0MGRhY2Uy
|
|
14
|
+
NzZjMDYwNzRlMmViYTliOTU1MmM1OWEzNjgxNTdlZjQ1MzhlNDJjODdhMDY4
|
|
15
|
+
NTJhMzE0NTJlN2QyM2Q1Njc4MWY3NDAxODIyYjE3Yjk4YmUzODM=
|
data/Gemfile
CHANGED
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.
|
|
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"
|
data/chicagowarehouse.gemspec
CHANGED
|
@@ -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.
|
|
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.
|
|
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-
|
|
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.
|
|
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.
|
|
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.
|
|
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 &&
|
|
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.
|
|
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-
|
|
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.
|
|
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.
|
|
40
|
+
version: 0.4.1
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: chronic
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|