create_custom_attributes 0.5.16 → 0.5.17

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: 65cbc672643cb49ee36b4140fcbeee13e17eacea
4
- data.tar.gz: 13a7414a56bab0289504698aeb05928ed87bfe2c
3
+ metadata.gz: da291bc2e4b77983c12426a2c6b6b9f0aaeb55b3
4
+ data.tar.gz: d60409a040c85fa5f876adf99f5df1d1213527a4
5
5
  SHA512:
6
- metadata.gz: 4099784fdf4b46e6be826d56e76febfcc48d6ee6e604ebaaeb354eda7d1f3a777b5ce10a9c6d92e36a62aca5de94103368683339612fe9f7b64bf91497855a0e
7
- data.tar.gz: 306496b4c55f325969d32d804aff7322d3107a5dc3561b37b01711ef037a0bd189762952120319edce6e346a9f6e1b76843608432e2f30c4125d4d1ec828af5a
6
+ metadata.gz: b97b5f9be626f258af322b2cc0e2689df04db66e753cbe93c69069cec151876d596e5691e0d56d39d55959185346ede2bd8e5c9aaf75605e59348c8ac02b3d39
7
+ data.tar.gz: 505ccd757de9304aa6b2f511bee09a892edb66c90903a015f023060f2e9de1a0d586f0f62e47ff04ffee2cf6540eafa36a0481d6adceb48a6d18c07b82110c97
@@ -45,20 +45,20 @@ module CustomAttributes
45
45
  self
46
46
  end
47
47
 
48
- def sort_by(field_list)
49
- @search_query.sort_by.merge! field_list
48
+ def filter_or(field_list)
49
+ @search_query.filter_or.merge! field_list
50
50
 
51
51
  self
52
52
  end
53
53
 
54
- def match_any
55
- @search_query.match_any = true
54
+ def sort_by(field_list)
55
+ @search_query.sort_by.merge! field_list
56
56
 
57
57
  self
58
58
  end
59
59
 
60
- def filter_any
61
- @search_query.filter_any = true
60
+ def match_any
61
+ @search_query.match_any = true
62
62
 
63
63
  self
64
64
  end
@@ -3,7 +3,7 @@ require 'custom_attributes/search_query_field'
3
3
  module CustomAttributes
4
4
  # Builds a query in elastic search DSL
5
5
  class SearchQuery
6
- attr_accessor :customizable, :query, :field_list, :defaults, :sort_by, :page, :per_page, :match_any, :filter_by, :filter_any
6
+ attr_accessor :customizable, :query, :field_list, :defaults, :sort_by, :page, :per_page, :match_any, :filter_by, :filter_or
7
7
 
8
8
  def build
9
9
  {
@@ -35,6 +35,10 @@ module CustomAttributes
35
35
  @filter_by ||= {}
36
36
  end
37
37
 
38
+ def filter_or
39
+ @filter_or ||= {}
40
+ end
41
+
38
42
  def sort_by
39
43
  @sort_by ||= {}
40
44
  end
@@ -54,10 +58,6 @@ module CustomAttributes
54
58
  @match_any
55
59
  end
56
60
 
57
- def filter_any?
58
- @filter_any
59
- end
60
-
61
61
  def default_fields
62
62
  default_fields = {
63
63
  custom_fields: Hash[customizable.available_custom_fields
@@ -77,7 +77,7 @@ module CustomAttributes
77
77
  private
78
78
 
79
79
  def subquery
80
- filter = filter_any_decorator(filter_hash_to_term_array) + [{ term: { visible_in_search: true } }]
80
+ filter = filter_term_array + [{ term: { visible_in_search: true } }]
81
81
 
82
82
  # match all documents if no particular query isset
83
83
  if query == '*' && field_list.empty?
@@ -161,8 +161,8 @@ module CustomAttributes
161
161
  end
162
162
  end
163
163
 
164
- def filter_hash_to_term_array
165
- hash_to_array(filter_by) do |type, field_slug, field_data|
164
+ def filter_hash_to_term_array(filter_list)
165
+ hash_to_array(filter_list) do |type, field_slug, field_data|
166
166
  if type == :custom_fields
167
167
  if field_data.is_a? Array
168
168
  field_data.map { |fd| custom_query_scaffold(fd, field_slug, true) }
@@ -178,6 +178,18 @@ module CustomAttributes
178
178
  end
179
179
  end
180
180
 
181
+ def filter_term_array
182
+ return filter_hash_to_term_array(filter_by) if filter_or.empty?
183
+
184
+ filter_hash = { minimum_should_match: 1 }
185
+ filter_hash[:must] = filter_hash_to_term_array(filter_by) unless filter_by.empty?
186
+ filter_hash[:should] = filter_hash_to_term_array(filter_or) unless filter_or.empty?
187
+
188
+ [{
189
+ bool: filter_hash
190
+ }]
191
+ end
192
+
181
193
  def filter_out_custom_fields(fields)
182
194
  return {} if fields[:fields].nil?
183
195
 
@@ -214,19 +226,6 @@ module CustomAttributes
214
226
  end
215
227
  end
216
228
 
217
- def filter_any_decorator(filter_array)
218
- if !filter_any?
219
- filter_array
220
- else
221
- [{
222
- bool: {
223
- should: filter_hash_to_term_array,
224
- minimum_should_match: 1
225
- }
226
- }]
227
- end
228
- end
229
-
230
229
  def custom_query_scaffold(query, field_slug, filter = false)
231
230
  condition = { match: { 'custom_field_values.value' => query } }
232
231
  condition = { term: { 'custom_field_values.value.raw' => query } } if filter
@@ -1,3 +1,3 @@
1
1
  module CustomAttributes
2
- VERSION = '0.5.16'.freeze
2
+ VERSION = '0.5.17'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: create_custom_attributes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.16
4
+ version: 0.5.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Grützmacher