embark-journey 0.1.1 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: be545fab222f3f8b7ba132b398f1939493884720
4
- data.tar.gz: adeec5bc879a5ace33102a3306c1c3fa964d14bc
3
+ metadata.gz: 6ac4ef34c6325ea06821366e826642336cb034da
4
+ data.tar.gz: ee74a230579f1b2255337666865eaa36c213c2b0
5
5
  SHA512:
6
- metadata.gz: cdc71dea35635846aa89f5020c51eecb6571885fdeb3c190208a609b577809183fb62b4407a881a7a7f60aa437721cab115815f509626b1deba98a3a3a7729f4
7
- data.tar.gz: a2421076bf07010f27daa861efd57d852aef0b9b61d461586ff798d3dc680d40766cb441b5447753382ad5d666e5d9d376440141add2fc4d8b849bbded3632f3
6
+ metadata.gz: aa2e19dda566ce02bd7bacd08896fb84485f4a4765dbc0eb25e31f5be66575fd647a14d35bda4c3be7e12244f2f940e7852c480f464d6981cc4aeff85642ca85
7
+ data.tar.gz: 4f7f5faab4299bb09cb9643d991d95f8cf5ef3c79cf4f34a55ed53e9921e5c36a139602ad0f7fc8eda186de7ae564a8202e328a2ff1b5120950da58f4ce0fdfa
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ v.0.1.3
2
+ - Added `batch_where` to account for massive queries timing out (e.g. 10k objects)
3
+
1
4
  v0.0.21
2
5
  - stomped out Rails load order bug by copying over entire Connection class (hacky)
3
6
 
@@ -44,6 +44,7 @@ require 'journey/resource/enum_sets'
44
44
  require 'journey/resource/queries'
45
45
  require 'journey/resource/search'
46
46
  require 'journey/resource/where_multiple'
47
+ require 'journey/resource/batch_where'
47
48
 
48
49
  class Journey::Resource
49
50
  include API
@@ -56,6 +57,7 @@ class Journey::Resource
56
57
  include Queries
57
58
  include Search
58
59
  include WhereMultiple
60
+ include BatchWhere
59
61
  end
60
62
 
61
63
 
@@ -0,0 +1,24 @@
1
+ require 'active_support/concern'
2
+
3
+ module Journey::Resource::BatchWhere
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+
8
+ def self.batch_where(clauses, batch_size=100)
9
+
10
+ total_count = count(clauses)
11
+ query_count = (total_count / batch_size.to_f).ceil.to_i
12
+
13
+ (0 ... query_count).to_a.map do |batch_index|
14
+
15
+ where_multiple clauses.merge({
16
+ limit: batch_size,
17
+ skip: batch_index * batch_size
18
+ })
19
+
20
+ end.flatten
21
+ end
22
+
23
+ end
24
+ end
@@ -2,7 +2,7 @@ module Journey
2
2
  module VERSION
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- TINY = 1
5
+ TINY = 3
6
6
  PRE = nil
7
7
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
8
8
  end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe Journey::Resource::BatchWhere do
4
+
5
+ let(:klass) do
6
+ Class.new(Journey::Resource) do
7
+ self.element_name = 'technician'
8
+ end
9
+ end
10
+
11
+ let(:surname) { SecureRandom.uuid }
12
+ let(:batch_size) { 2 }
13
+
14
+ let!(:objects) do
15
+ (1..5).to_a.map do |index|
16
+ klass.create(name: index, surname: surname)
17
+ end
18
+ end
19
+
20
+ it 'returns the correct resources' do
21
+ candidates = klass.batch_where({ query: { surname: surname } }, batch_size)
22
+ expect(objects).to eq candidates
23
+ end
24
+
25
+ it 'makes multiple queries' do
26
+ expect(klass).to receive(:where_multiple).exactly(3).times
27
+ klass.batch_where({ query: { surname: surname } }, batch_size)
28
+ end
29
+
30
+ end
@@ -5,15 +5,10 @@ describe Journey::Resource::WhereMultiple do
5
5
  let(:klass) do
6
6
  Class.new(Journey::Resource) do
7
7
  self.element_name = 'job'
8
-
9
- def self.destroy_all
10
- all.each(&:destroy)
11
- end
12
8
  end
13
9
  end
14
10
 
15
-
16
- before { klass.destroy_all }
11
+ before { klass.all.each(&:destroy) }
17
12
 
18
13
  let!(:candidates) { matchables + unmatchables }
19
14
  let(:collection) { klass.where_multiple(clauses) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embark-journey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Davey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-19 00:00:00.000000000 Z
11
+ date: 2015-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_attr
@@ -152,6 +152,7 @@ files:
152
152
  - lib/journey/resource/api.rb
153
153
  - lib/journey/resource/attachments.rb
154
154
  - lib/journey/resource/attribute_loading.rb
155
+ - lib/journey/resource/batch_where.rb
155
156
  - lib/journey/resource/count.rb
156
157
  - lib/journey/resource/embed.rb
157
158
  - lib/journey/resource/enum_sets.rb
@@ -164,6 +165,7 @@ files:
164
165
  - spec/models/journey/configuration_spec.rb
165
166
  - spec/models/journey/oplog_spec.rb
166
167
  - spec/models/journey/resource/attachments_spec.rb
168
+ - spec/models/journey/resource/batch_where_spec.rb
167
169
  - spec/models/journey/resource/where_multiple_spec.rb
168
170
  - spec/models/journey/resource_spec.rb
169
171
  - spec/spec_helper.rb
@@ -199,6 +201,7 @@ test_files:
199
201
  - spec/models/journey/configuration_spec.rb
200
202
  - spec/models/journey/oplog_spec.rb
201
203
  - spec/models/journey/resource/attachments_spec.rb
204
+ - spec/models/journey/resource/batch_where_spec.rb
202
205
  - spec/models/journey/resource/where_multiple_spec.rb
203
206
  - spec/models/journey/resource_spec.rb
204
207
  - spec/spec_helper.rb