stretchy 0.3.7 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d19628e7bb3b4177002806dee9ae3cd41e67340
4
- data.tar.gz: cdb6536ac2450f5f8f01a6efab5071c0bb88e9f8
3
+ metadata.gz: f6b9494adc6453711289b4e3c5321c683d190ab7
4
+ data.tar.gz: 0d8832b4787080dff61db37429c7cf8d021a0074
5
5
  SHA512:
6
- metadata.gz: 1fb125ae7d1763bd44c2fef081d3a1ab2d3ae4e5a9289341e32b98617bd26dd667a387333b38d97ae6942da519d980ac380b28b738c12c80345e174c19b6f1d4
7
- data.tar.gz: 1aa29437d28d4dcd4e85840d161f068f09569b2b3f4c008886cdebc1dc005eb50fc9d4aca120c21611b777721bfe971fa3daa4b7da3a116d006a6d54fbcd9960
6
+ metadata.gz: 5b3bb35dcdeec2eb3745b29c4adfa127e6055c02ed3273a8c308f25135f1dd5a9498b0f3de3c1684934b78f60687a2c56caed3bac45da8a7a0b127f8d7b299cf
7
+ data.tar.gz: aa4e00a5abda4a8ca7e581ecc5b84a513283deeacc8b295412d4bc561c388c3895562612a0b9a041d9938ab99fa8e8f53cfcefa7ae1c1cdce403b40fe71eef37
@@ -23,7 +23,7 @@ module Stretchy
23
23
  :aggregate_builder, :inverse, :type, :index_name
24
24
 
25
25
  delegate [:request, :response, :results, :ids, :hits,
26
- :took, :shards, :total, :max_score] => :query_results
26
+ :took, :shards, :total, :max_score, :total_pages] => :query_results
27
27
  delegate [:range, :geo] => :where
28
28
 
29
29
  #
@@ -59,7 +59,7 @@ module Stretchy
59
59
  @match_builder = Stretchy::Builders::MatchBuilder.new
60
60
  @where_builder = Stretchy::Builders::WhereBuilder.new
61
61
  @boost_builder = Stretchy::Builders::BoostBuilder.new
62
- @aggregate_builder = nil
62
+ @aggregate_builder = {}
63
63
  @inverse = options[:inverse]
64
64
  @limit = DEFAULT_LIMIT
65
65
  @offset = DEFAULT_OFFSET
@@ -87,6 +87,7 @@ module Stretchy
87
87
  def get_limit
88
88
  @limit
89
89
  end
90
+ alias :limit_value :get_limit
90
91
 
91
92
  #
92
93
  # Sets the offset to start returning results at.
@@ -101,6 +102,7 @@ module Stretchy
101
102
  @offset = num
102
103
  self
103
104
  end
105
+ alias :per_page :offset
104
106
 
105
107
  #
106
108
  # Accessor for `@offset`
@@ -110,6 +112,27 @@ module Stretchy
110
112
  @offset
111
113
  end
112
114
 
115
+ #
116
+ # Allows pagination via Kaminari-like accessor
117
+ # @param num [Integer] Page number. Natural numbers only, **this is not zero-indexed**
118
+ # @option per_page [Integer] :per_page (DEFAULT_LIMIT) Number of results per page
119
+ #
120
+ # @return [self] Allows continuing the query chain
121
+ def page(num, options = {})
122
+ @limit = options[:limit] || options[:per_page] || @limit
123
+ @offset = [(num - 1), 0].max.ceil * @limit
124
+ self
125
+ end
126
+
127
+ #
128
+ # Accessor for current page
129
+ #
130
+ # @return [Integer] (offset / limit).ceil
131
+ def get_page
132
+ (@offset.to_f / @limit).ceil + 1
133
+ end
134
+ alias :current_page :get_page
135
+
113
136
  #
114
137
  # Tells the search to explain the scoring
115
138
  # mechanism for each document.
@@ -222,6 +245,23 @@ module Stretchy
222
245
  end
223
246
  end
224
247
 
248
+ #
249
+ # Allows adding raw aggregation JSON to your
250
+ # query
251
+ # @param opts = {} [Hash] JSON to aggregate on
252
+ #
253
+ # @return [self] Allows continuing the query chain
254
+ def aggregations(opts = {})
255
+ @aggregate_builder = @aggregate_builder.merge(opts)
256
+ self
257
+ end
258
+ alias :aggs :aggregations
259
+
260
+ def get_aggregations
261
+ @aggregate_builder
262
+ end
263
+ alias :get_aggs :get_aggregations
264
+
225
265
  #
226
266
  # Accessor for `@inverse`
227
267
  #
@@ -6,7 +6,7 @@ module Stretchy
6
6
 
7
7
  attr_reader :clause, :index_name
8
8
 
9
- delegate [:type] => :clause
9
+ delegate [:type, :current_page, :limit_value] => :clause
10
10
 
11
11
  def initialize(clause)
12
12
  @clause = clause
@@ -16,13 +16,26 @@ module Stretchy
16
16
  def limit
17
17
  clause.get_limit
18
18
  end
19
+ alias :per_page :limit
20
+ alias :limit_value :limit
19
21
 
20
22
  def offset
21
23
  clause.get_offset
22
24
  end
23
25
 
26
+ def page
27
+ clause.get_page
28
+ end
29
+
30
+ def total_pages
31
+ [(total.to_f / limit).ceil, 1].max
32
+ end
33
+
24
34
  def request
25
- @request ||= {query: clause.to_search}
35
+ return @request if @request
36
+ @request = {query: clause.to_search}
37
+ @request[:aggs] = clause.get_aggregations if clause.get_aggregations.any?
38
+ @request
26
39
  end
27
40
 
28
41
  def response
@@ -32,7 +45,7 @@ module Stretchy
32
45
  from: offset,
33
46
  size: limit
34
47
  }
35
- params[:explain] = true if clause.get_explain
48
+ params[:explain] = true if clause.get_explain
36
49
  @response ||= Stretchy.search(params)
37
50
  end
38
51
 
@@ -60,6 +73,10 @@ module Stretchy
60
73
  end]
61
74
  end
62
75
 
76
+ def aggregations
77
+ @aggregations ||= response['aggregations']
78
+ end
79
+
63
80
  def took
64
81
  @took ||= response['took']
65
82
  end
@@ -1,3 +1,3 @@
1
1
  module Stretchy
2
- VERSION = "0.3.7"
2
+ VERSION = "0.3.8"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stretchy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - agius
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-05-15 00:00:00.000000000 Z
11
+ date: 2015-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: elasticsearch