quandl_cassinatra 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -1
- data/lib/quandl/cassinatra/concerns/properties.rb +68 -0
- data/lib/quandl/cassinatra/concerns/search.rb +26 -0
- data/lib/quandl/cassinatra/concerns.rb +17 -0
- data/lib/quandl/cassinatra/model/dataset/searchable.rb +2 -2
- data/lib/quandl/cassinatra/model/dataset.rb +22 -3
- data/lib/quandl/cassinatra/model/dataset_attribute.rb +1 -2
- data/lib/quandl/cassinatra/model/multiset.rb +16 -4
- data/lib/quandl/cassinatra/version.rb +1 -1
- data/lib/quandl/cassinatra.rb +3 -0
- data/quandl_cassinatra.gemspec +1 -1
- metadata +7 -5
- data/lib/quandl/cassinatra/model/dataset/rest_orm.rb +0 -41
data/.gitignore
CHANGED
@@ -0,0 +1,68 @@
|
|
1
|
+
module Quandl
|
2
|
+
module Cassinatra
|
3
|
+
module Concerns
|
4
|
+
|
5
|
+
module Properties
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
|
10
|
+
include Her::Model
|
11
|
+
use_api Quandl::Cassinatra.her_api
|
12
|
+
|
13
|
+
before_save :touch_save_time
|
14
|
+
before_save :halt_unless_valid!
|
15
|
+
|
16
|
+
after_save :log_save_time
|
17
|
+
|
18
|
+
def valid_with_server?
|
19
|
+
return false unless valid?
|
20
|
+
return false unless errors_params.blank?
|
21
|
+
return false unless errors_server.blank?
|
22
|
+
true
|
23
|
+
end
|
24
|
+
|
25
|
+
def error_messages
|
26
|
+
valid?
|
27
|
+
errors_client.deep_merge(errors_server).deep_merge(errors_params)
|
28
|
+
end
|
29
|
+
|
30
|
+
def errors_client
|
31
|
+
errors.messages || {}
|
32
|
+
end
|
33
|
+
|
34
|
+
def errors_server
|
35
|
+
self.attributes[:errors] || {}
|
36
|
+
end
|
37
|
+
|
38
|
+
def errors_params
|
39
|
+
response_errors.present? ? { response_errors: response_errors } : {}
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
protected
|
44
|
+
|
45
|
+
def halt_unless_valid!
|
46
|
+
return false unless valid?
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def save_timer
|
52
|
+
@save_timer
|
53
|
+
end
|
54
|
+
|
55
|
+
def touch_save_time
|
56
|
+
@save_timer = Time.now
|
57
|
+
end
|
58
|
+
|
59
|
+
def log_save_time
|
60
|
+
Quandl::Logger.info("#{self.class.name}.save (#{save_timer.elapsed_ms})")
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Quandl
|
2
|
+
module Cassinatra
|
3
|
+
module Concerns
|
4
|
+
|
5
|
+
module Search
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
|
10
|
+
include ScopeBuilder::Model
|
11
|
+
|
12
|
+
scope_builder_for :search
|
13
|
+
|
14
|
+
search_helper :all, ->{ connection.where(attributes).fetch }
|
15
|
+
search_helper :connection, -> { self.class.parent }
|
16
|
+
|
17
|
+
search_scope.class_eval do
|
18
|
+
delegate *Array.forwardable_methods, to: :all
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "active_support"
|
2
|
+
require "active_support/inflector"
|
3
|
+
require "active_support/core_ext/hash"
|
4
|
+
require "active_support/core_ext/object"
|
5
|
+
|
6
|
+
require 'quandl/cassinatra/concerns/search'
|
7
|
+
require 'quandl/cassinatra/concerns/properties'
|
8
|
+
|
9
|
+
module Quandl
|
10
|
+
module Cassinatra
|
11
|
+
|
12
|
+
module Concerns
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -67,9 +67,9 @@ module Searchable
|
|
67
67
|
begin
|
68
68
|
t1 = Time.now
|
69
69
|
result = self.class.parent.where(attributes).find(id)
|
70
|
-
|
70
|
+
Quandl::Logger.debug "Quandl::Cassinatra::Dataset.where(#{attributes.to_param if attributes.respond_to?(:to_param)}).find(#{id}) (#{t1.elapsed_ms})"
|
71
71
|
rescue => error
|
72
|
-
|
72
|
+
Quandl::Logger.error "Quandl::Cassinatra::Dataset.find #{error}"
|
73
73
|
end
|
74
74
|
result = self.class.parent.new(id: id) if result.nil?
|
75
75
|
result
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'quandl/cassinatra/model/dataset/searchable'
|
2
|
-
require 'quandl/cassinatra/model/dataset/rest_orm'
|
3
2
|
|
4
3
|
module Quandl
|
5
4
|
module Cassinatra
|
@@ -7,9 +6,29 @@ module Model
|
|
7
6
|
|
8
7
|
class Dataset
|
9
8
|
|
9
|
+
include Concerns::Properties
|
10
10
|
include Searchable
|
11
|
-
|
12
|
-
|
11
|
+
|
12
|
+
attributes :id, :column_ids, :data
|
13
|
+
|
14
|
+
delegate :columns_count, :created_at, :frequency, :rows_count, :type, :updated_at, to: :dataset_attribute
|
15
|
+
|
16
|
+
def data_table
|
17
|
+
Data::Table.new( self.data || [] )
|
18
|
+
end
|
19
|
+
def data_table=(value)
|
20
|
+
self.data = Data::Table.new(value).to_csv
|
21
|
+
end
|
22
|
+
|
23
|
+
def dataset_attribute(*args)
|
24
|
+
return @dataset_attribute if @dataset_attribute
|
25
|
+
# options
|
26
|
+
options = args.extract_options!
|
27
|
+
count = options[:count] == true
|
28
|
+
# grab dataset_attribute
|
29
|
+
@dataset_attribute = DatasetAttribute.where( count: count ).find(id)
|
30
|
+
end
|
31
|
+
|
13
32
|
end
|
14
33
|
end
|
15
34
|
end
|
@@ -5,13 +5,25 @@ module Model
|
|
5
5
|
class Multiset
|
6
6
|
|
7
7
|
include Model::Dataset::Searchable
|
8
|
-
include
|
8
|
+
include Concerns::Properties
|
9
9
|
|
10
10
|
search_helper :dataset, -> { find('multiset') }
|
11
11
|
search_scope :columns
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
|
13
|
+
attributes :id, :column_ids, :data
|
14
|
+
|
15
|
+
delegate :columns_count, :created_at, :frequency, :rows_count, :type, :updated_at, to: :dataset_attribute
|
16
|
+
|
17
|
+
def data_table
|
18
|
+
Data::Table.new( self.data || [] )
|
19
|
+
end
|
20
|
+
def dataset_attribute(*args)
|
21
|
+
return @dataset_attribute if @dataset_attribute
|
22
|
+
# options
|
23
|
+
options = args.extract_options!
|
24
|
+
count = options[:count] == true
|
25
|
+
# grab dataset_attribute
|
26
|
+
@dataset_attribute = DatasetAttribute.where( count: count ).find(id)
|
15
27
|
end
|
16
28
|
|
17
29
|
end
|
data/lib/quandl/cassinatra.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require "quandl/cassinatra/version"
|
2
2
|
|
3
|
+
require 'quandl/logger'
|
4
|
+
|
3
5
|
require "active_support"
|
4
6
|
require "active_support/inflector"
|
5
7
|
require "active_support/core_ext/hash"
|
@@ -10,6 +12,7 @@ require 'quandl/her/patch'
|
|
10
12
|
require 'scope_builder'
|
11
13
|
require "quandl/data"
|
12
14
|
|
15
|
+
require 'quandl/cassinatra/concerns'
|
13
16
|
require 'quandl/cassinatra/her'
|
14
17
|
require 'quandl/cassinatra/model'
|
15
18
|
|
data/quandl_cassinatra.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.add_runtime_dependency "activesupport", ">= 3.0.0"
|
26
26
|
s.add_runtime_dependency "her", "~> 0.6.7"
|
27
27
|
s.add_runtime_dependency "scope_builder", "~> 0.0.6"
|
28
|
-
s.add_runtime_dependency "quandl_data", "~> 0.0.
|
28
|
+
s.add_runtime_dependency "quandl_data", "~> 0.0.8"
|
29
29
|
s.add_runtime_dependency "yajl-ruby", "~> 1.1.0"
|
30
30
|
s.add_runtime_dependency 'json', '~> 1.7.7'
|
31
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quandl_cassinatra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -130,7 +130,7 @@ dependencies:
|
|
130
130
|
requirements:
|
131
131
|
- - ~>
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: 0.0.
|
133
|
+
version: 0.0.8
|
134
134
|
type: :runtime
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -138,7 +138,7 @@ dependencies:
|
|
138
138
|
requirements:
|
139
139
|
- - ~>
|
140
140
|
- !ruby/object:Gem::Version
|
141
|
-
version: 0.0.
|
141
|
+
version: 0.0.8
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
143
|
name: yajl-ruby
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
@@ -188,10 +188,12 @@ files:
|
|
188
188
|
- Rakefile
|
189
189
|
- UPGRADE.md
|
190
190
|
- lib/quandl/cassinatra.rb
|
191
|
+
- lib/quandl/cassinatra/concerns.rb
|
192
|
+
- lib/quandl/cassinatra/concerns/properties.rb
|
193
|
+
- lib/quandl/cassinatra/concerns/search.rb
|
191
194
|
- lib/quandl/cassinatra/her.rb
|
192
195
|
- lib/quandl/cassinatra/model.rb
|
193
196
|
- lib/quandl/cassinatra/model/dataset.rb
|
194
|
-
- lib/quandl/cassinatra/model/dataset/rest_orm.rb
|
195
197
|
- lib/quandl/cassinatra/model/dataset/searchable.rb
|
196
198
|
- lib/quandl/cassinatra/model/dataset_attribute.rb
|
197
199
|
- lib/quandl/cassinatra/model/multiset.rb
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Quandl
|
2
|
-
module Cassinatra
|
3
|
-
module Model
|
4
|
-
class Dataset
|
5
|
-
|
6
|
-
module RestOrm
|
7
|
-
|
8
|
-
extend ActiveSupport::Concern
|
9
|
-
|
10
|
-
included do
|
11
|
-
|
12
|
-
include Her::Model
|
13
|
-
use_api Cassinatra.her_api
|
14
|
-
|
15
|
-
attributes :id, :column_ids, :data
|
16
|
-
|
17
|
-
delegate :columns_count, :created_at, :frequency, :rows_count, :type, :updated_at, to: :dataset_attribute
|
18
|
-
|
19
|
-
def data_table
|
20
|
-
Data::Table.new( self.data || [] )
|
21
|
-
end
|
22
|
-
def data_table=(value)
|
23
|
-
self.data = Data::Table.new(value).to_jd.to_csv
|
24
|
-
end
|
25
|
-
|
26
|
-
def dataset_attribute(*args)
|
27
|
-
return @dataset_attribute if @dataset_attribute
|
28
|
-
# options
|
29
|
-
options = args.extract_options!
|
30
|
-
count = options[:count] == true
|
31
|
-
# grab dataset_attribute
|
32
|
-
@dataset_attribute = DatasetAttribute.where( count: count ).find(id)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|