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 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