embark-journey 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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