quandl_cassinatra 0.0.7 → 0.0.8

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/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  /Gemfile.lock
2
2
  /pkg
3
3
  /tmp
4
- quandl_cassinatra-*
4
+ *.gem
5
+ *.log
@@ -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
- puts "parent.where(#{attributes.to_param if attributes.respond_to?(:to_param)}).find(#{id}) (#{t1.elapsed_ms})"
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
- puts "ERROR: Cassandra #{error}"
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
- include RestOrm
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
@@ -4,8 +4,7 @@ module Model
4
4
 
5
5
  class DatasetAttribute
6
6
 
7
- include Her::Model
8
- use_api Quandl::Cassinatra.her_api
7
+ include Concerns::Properties
9
8
 
10
9
  end
11
10
 
@@ -5,13 +5,25 @@ module Model
5
5
  class Multiset
6
6
 
7
7
  include Model::Dataset::Searchable
8
- include Model::Dataset::RestOrm
8
+ include Concerns::Properties
9
9
 
10
10
  search_helper :dataset, -> { find('multiset') }
11
11
  search_scope :columns
12
-
13
- def data_table=(value)
14
- false
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
@@ -1,5 +1,5 @@
1
1
  module Quandl
2
2
  module Cassinatra
3
- VERSION = '0.0.7'
3
+ VERSION = '0.0.8'
4
4
  end
5
5
  end
@@ -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
 
@@ -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.5"
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.7
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-08 00:00:00.000000000 Z
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.5
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.5
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