quandl_cassinatra 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/quandl/cassinatra/concerns/properties.rb +4 -0
- data/lib/quandl/cassinatra/concerns/search.rb +1 -1
- data/lib/quandl/cassinatra/core_ext/string.rb +8 -0
- data/lib/quandl/cassinatra/core_ext.rb +1 -0
- data/lib/quandl/cassinatra/model/dataset/searchable.rb +6 -5
- data/lib/quandl/cassinatra/model/dataset.rb +1 -1
- data/lib/quandl/cassinatra/model/multiset.rb +13 -1
- data/lib/quandl/cassinatra/version.rb +1 -1
- data/lib/quandl/cassinatra.rb +2 -0
- data/quandl_cassinatra.gemspec +2 -1
- data/spec/factories/dataset.rb +8 -0
- data/spec/quandl/cassinatra/dataset_spec.rb +49 -2
- data/spec/quandl/cassinatra/multiset_spec.rb +36 -0
- data/spec/spec_helper.rb +16 -1
- metadata +24 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45a95dc8da2c6c36d90fab270ae451dad6664cbb
|
4
|
+
data.tar.gz: 4aa4b14387f7a9cefa3497e0ebb7e3d4fc072e0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 033f0adbf5d98363b3841dc6b0c9aa820fa87c8fdf405d8bcf5375b101688025c8159a6c2f368b826c8f07bd4ac27328fba3621d18a441bf3d7c5e318fe7f6d3
|
7
|
+
data.tar.gz: 65ec2ad1d5fa2c5ef4cf0bfb5ce49a0aab7341e52b288e45d250b6ae166a00e78a12d9abead16936f506f77b8ca98cf8edc0b00b8aa811b716a90c657183143f
|
@@ -0,0 +1 @@
|
|
1
|
+
require "quandl/cassinatra/core_ext/string"
|
@@ -40,11 +40,11 @@ module Searchable
|
|
40
40
|
delegate *Data::Table.forwardable_methods, to: :data_table
|
41
41
|
end
|
42
42
|
|
43
|
-
search_scope :row, ->(v){ where( row: v.to_i ) }
|
44
|
-
search_scope :limit, ->(v){ where( limit: v.to_i ) }
|
45
|
-
search_scope :offset, ->(v){ where( offset: v.to_i ) }
|
46
|
-
search_scope :accuracy, ->(v){ where( accuracy: v.to_i ) }
|
47
|
-
search_scope :column, ->(
|
43
|
+
search_scope :row, ->(v) { where( row: v.to_i ) }
|
44
|
+
search_scope :limit, ->(v) { where( limit: v.to_i ) }
|
45
|
+
search_scope :offset, ->(v) { where( offset: v.to_i ) }
|
46
|
+
search_scope :accuracy, ->(v) { where( accuracy: v.to_i ) }
|
47
|
+
search_scope :column, ->(v) { where( column: v.to_i ) }
|
48
48
|
search_scope :order, ->(dir) { where( order: (dir.to_sym == :asc) ? 'asc' : 'desc' ) }
|
49
49
|
search_scope :trim_start, ->(date) { where( trim_start: format_trim_date(date, :start)) }
|
50
50
|
search_scope :trim_end, ->(date) { where( trim_end: format_trim_date(date, :end)) }
|
@@ -60,6 +60,7 @@ module Searchable
|
|
60
60
|
}
|
61
61
|
|
62
62
|
search_helper :format_trim_date, ->( date, start_or_end ){
|
63
|
+
date = Date.jd(date.to_i) if date.kind_of?(String) && date.numeric?
|
63
64
|
date = Date.jd(date) if date.is_a?(Integer)
|
64
65
|
date = Date.parse(date) if date.is_a?(String)
|
65
66
|
date = date.send("#{start_or_end}_of_frequency", collapse) if collapse.present?
|
@@ -14,7 +14,7 @@ class Dataset
|
|
14
14
|
delegate :columns_count, :created_at, :frequency, :rows_count, :type, :updated_at, to: :dataset_attribute
|
15
15
|
|
16
16
|
def data_table
|
17
|
-
Data::Table.new( self.data || [] )
|
17
|
+
@data_table ||= Data::Table.new( self.data || [] )
|
18
18
|
end
|
19
19
|
def data_table=(value)
|
20
20
|
self.data = Data::Table.new(value).to_csv
|
@@ -7,8 +7,20 @@ class Multiset
|
|
7
7
|
include Model::Dataset::Searchable
|
8
8
|
include Concerns::Properties
|
9
9
|
|
10
|
+
|
11
|
+
search_helper :to_dataset, -> { dataset }
|
10
12
|
search_helper :dataset, -> { find('multiset') }
|
11
|
-
search_scope :columns
|
13
|
+
search_scope :columns, -> (v) { where( columns: format_columns(v) ) }
|
14
|
+
|
15
|
+
search_helper :format_columns, ->(cols){
|
16
|
+
cols.split(',').collect do |column|
|
17
|
+
id_position = column.split('.')
|
18
|
+
id = id_position.first.to_i
|
19
|
+
position = id_position.last.to_i
|
20
|
+
position = position - 1 if position > 0
|
21
|
+
"#{id}.#{position}"
|
22
|
+
end.join(',')
|
23
|
+
}
|
12
24
|
|
13
25
|
attributes :id, :column_ids, :data
|
14
26
|
|
data/lib/quandl/cassinatra.rb
CHANGED
data/quandl_cassinatra.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
|
20
20
|
s.add_development_dependency "rake", "~> 10.0"
|
21
21
|
s.add_development_dependency "rspec", "~> 2.13"
|
22
|
+
s.add_development_dependency "factory_girl", "~> 4.2.0"
|
22
23
|
s.add_development_dependency "fivemat", "~> 1.2"
|
23
24
|
s.add_development_dependency "pry"
|
24
25
|
|
@@ -27,6 +28,6 @@ Gem::Specification.new do |s|
|
|
27
28
|
s.add_runtime_dependency "yajl-ruby", "~> 1.1.0"
|
28
29
|
s.add_runtime_dependency 'json', '~> 1.7.7'
|
29
30
|
|
30
|
-
s.add_runtime_dependency "quandl_data", ">= 0.1.
|
31
|
+
s.add_runtime_dependency "quandl_data", ">= 0.1.8"
|
31
32
|
s.add_runtime_dependency "scope_composer", ">= 0.1.0"
|
32
33
|
end
|
@@ -1,11 +1,58 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
|
-
describe
|
5
|
-
subject {
|
4
|
+
describe Dataset do
|
5
|
+
subject { Dataset.new }
|
6
6
|
|
7
7
|
it { should respond_to :columns_count }
|
8
8
|
it { should respond_to :data }
|
9
9
|
it { should respond_to :data_table }
|
10
10
|
|
11
|
+
context "create" do
|
12
|
+
|
13
|
+
subject{ build(:dataset) }
|
14
|
+
|
15
|
+
it "should have data" do
|
16
|
+
subject.data_table.count.should eq 730
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should have four columns" do
|
20
|
+
subject.data_table[0].count.should eq 4
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should create the dataset" do
|
24
|
+
subject.save
|
25
|
+
Dataset.find(subject.id).data.count.should eq 730
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
context "searchable" do
|
31
|
+
|
32
|
+
describe "trim_start" do
|
33
|
+
|
34
|
+
it "should accept date" do
|
35
|
+
date = Date.today
|
36
|
+
Dataset.trim_start(date).attributes[:trim_start].should eq Date.today.jd
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should accept string date" do
|
40
|
+
date = Date.today.to_s
|
41
|
+
Dataset.trim_start(date).attributes[:trim_start].should eq Date.today.jd
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should accept string julian date" do
|
45
|
+
date = Date.today.jd.to_s
|
46
|
+
Dataset.trim_start(date).attributes[:trim_start].should eq Date.today.jd
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should accept integer" do
|
50
|
+
date = Date.today.jd
|
51
|
+
Dataset.trim_start(date).attributes[:trim_start].should eq Date.today.jd
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
11
58
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Multiset do
|
5
|
+
let(:d1){ create(:dataset, data_table: Quandl::Data::Random.table( rows: 10, columns: 4, nils: false ) ) }
|
6
|
+
let(:d2){ create(:dataset, data_table: Quandl::Data::Random.table( rows: 10, columns: 4, nils: false ) ) }
|
7
|
+
|
8
|
+
it "should retrieve the requested columns" do
|
9
|
+
m = Multiset.columns("#{d1.id.to_i}.0,#{d2.id.to_i}.0").to_dataset
|
10
|
+
m.data_table[0][1].should eq d1.data_table[0][1]
|
11
|
+
m.data_table[0][2].should eq d2.data_table[0][1]
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should retrieve the requested columns" do
|
15
|
+
m = Multiset.columns("#{d2.id.to_i}.1,#{d1.id.to_i}.1").to_dataset
|
16
|
+
m.data_table[0][1].should eq d2.data_table[0][1]
|
17
|
+
m.data_table[0][2].should eq d1.data_table[0][1]
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should be in the right order" do
|
21
|
+
m = Multiset.columns("#{d2.id.to_i}.1,#{d1.id.to_i}.1,#{d2.id.to_i}.3,#{d1.id.to_i}.2").to_dataset
|
22
|
+
c1 = Dataset.find(d1.id).column_ids
|
23
|
+
c2 = Dataset.find(d2.id).column_ids
|
24
|
+
requested_order = [ c2[0], c1[0], c2[2], c1[1] ]
|
25
|
+
m.column_ids.should eq requested_order
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should retrieve the requested columns" do
|
29
|
+
m = Multiset.columns("#{d2.id.to_i}.1,#{d1.id.to_i}.1,#{d2.id.to_i}.3,#{d1.id.to_i}.2").to_dataset
|
30
|
+
m.data_table[0][1].should eq d2.data_table[0][1]
|
31
|
+
m.data_table[0][2].should eq d1.data_table[0][1]
|
32
|
+
m.data_table[0][3].should eq d2.data_table[0][3]
|
33
|
+
m.data_table[0][4].should eq d1.data_table[0][2]
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,19 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
2
2
|
|
3
3
|
require "rspec"
|
4
|
-
require
|
4
|
+
require 'pry'
|
5
|
+
require 'factory_girl'
|
6
|
+
|
7
|
+
factory_dir = File.join( File.dirname(__FILE__), 'factories/**/*.rb' )
|
8
|
+
Dir.glob( factory_dir ).each{|f| require(f); puts f }
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
config.include FactoryGirl::Syntax::Methods
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
# LOAD GEM
|
16
|
+
|
17
|
+
require "quandl/cassinatra"
|
18
|
+
Quandl::Cassinatra.use 'http://192.168.33.10:8983/wikiposit_cassandra/'
|
19
|
+
include Quandl::Cassinatra
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quandl_cassinatra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Blake Hilscher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.13'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: factory_girl
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 4.2.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 4.2.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: fivemat
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +142,14 @@ dependencies:
|
|
128
142
|
requirements:
|
129
143
|
- - '>='
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.1.
|
145
|
+
version: 0.1.8
|
132
146
|
type: :runtime
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - '>='
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.1.
|
152
|
+
version: 0.1.8
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: scope_composer
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,6 +184,8 @@ files:
|
|
170
184
|
- lib/quandl/cassinatra/concerns.rb
|
171
185
|
- lib/quandl/cassinatra/concerns/properties.rb
|
172
186
|
- lib/quandl/cassinatra/concerns/search.rb
|
187
|
+
- lib/quandl/cassinatra/core_ext.rb
|
188
|
+
- lib/quandl/cassinatra/core_ext/string.rb
|
173
189
|
- lib/quandl/cassinatra/her.rb
|
174
190
|
- lib/quandl/cassinatra/model.rb
|
175
191
|
- lib/quandl/cassinatra/model/dataset.rb
|
@@ -179,7 +195,9 @@ files:
|
|
179
195
|
- lib/quandl/cassinatra/version.rb
|
180
196
|
- lib/quandl/her/patch.rb
|
181
197
|
- quandl_cassinatra.gemspec
|
198
|
+
- spec/factories/dataset.rb
|
182
199
|
- spec/quandl/cassinatra/dataset_spec.rb
|
200
|
+
- spec/quandl/cassinatra/multiset_spec.rb
|
183
201
|
- spec/spec_helper.rb
|
184
202
|
homepage: http://blake.hilscher.ca/
|
185
203
|
licenses:
|
@@ -206,5 +224,7 @@ signing_key:
|
|
206
224
|
specification_version: 4
|
207
225
|
summary: Cassinatra rest orm.
|
208
226
|
test_files:
|
227
|
+
- spec/factories/dataset.rb
|
209
228
|
- spec/quandl/cassinatra/dataset_spec.rb
|
229
|
+
- spec/quandl/cassinatra/multiset_spec.rb
|
210
230
|
- spec/spec_helper.rb
|