elasticsearch_record 1.5.2 → 1.5.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
  SHA256:
3
- metadata.gz: 9a53ead4edbffa7bb74c8021008343f80813512f89b6580717d7d4335ce238ba
4
- data.tar.gz: 26603c0b2de3b938c4239401652d4986088be1d29b1c039c2feb0c48b83a5207
3
+ metadata.gz: 238cf0f5e82cb385fc6d0f4e7f0416192f1cf65134b9726de16149be5fe6dc6b
4
+ data.tar.gz: 002b7d91869f2c0a9f03729c9c2c0db3719abfa9d523925cfeaf5bacf101e563
5
5
  SHA512:
6
- metadata.gz: 8d60b93db8b944ac6b0b42c91e411d6ae9673f773feeab7fbc9097e519663401a349936a271f6949d65f46485198cce44c349c38d3d2f668e2f3ee6148417264
7
- data.tar.gz: 9e3a2700baa40c8bc4b6a72c6a94895f3beb030294955ca6d1a168349c81b289d80bf2d93cfa5411f0a8c2a74dd3b183ece5ee64ef3deef7ff2f0f440aef32dc
6
+ metadata.gz: b58fc1dbdd310c1e5c8c47bb54398a4300042c063afd6a49543a5c6b2a270f2ffe7fb168b357ff1da5cb738ab602550bbf8a1297d4464089c5c0d8809a4e3a8c
7
+ data.tar.gz: 10be3f8fa2ea798bf58f2187ee7ea23099545ddad32036642e3b16d5e48cde7ccbabaff2bc68bc0baa2c71c41409de14abebedd11d6b0bcbe026c0e8200f0db2
data/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # ElasticsearchRecord - CHANGELOG
2
2
 
3
+ ## [1.5.3] - 2023-07-14
4
+ * [fix] `ElasticsearchRecord::Relation#where!` on nested, provided `:none` key
5
+ * [ref] minor code tweaks and comment updates
6
+
3
7
  ## [1.5.2] - 2023-07-12
4
8
  * [fix] `ElasticsearchRecord::Relation#limit` setter method `limit_value=` to work with **delegate_query_nil_limit?**
5
9
 
@@ -39,7 +39,7 @@ This Code of Conduct applies within all community spaces, and also applies when
39
39
 
40
40
  ## Enforcement
41
41
 
42
- Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at tg@reimbursement.institute. All complaints will be reviewed and investigated promptly and fairly.
42
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at info@ruby-smart.org. All complaints will be reviewed and investigated promptly and fairly.
43
43
 
44
44
  All community leaders are obligated to respect the privacy and security of the reporter of any incident.
45
45
 
@@ -138,12 +138,11 @@ module Arel # :nodoc: all
138
138
 
139
139
  # CUSTOM node by elasticsearch_record
140
140
  def visit_Query(o)
141
- # in some cases we don't have a kind, but where conditions.
142
- # in this case we force the kind as +:bool+.
143
- kind = :bool if o.wheres.present? && o.kind.blank?
144
-
145
- # resolve kind, if not already set
146
- kind ||= o.kind.present? ? visit(o.kind.expr) : nil
141
+ # resolves the query kind.
142
+ # PLEASE NOTE: in some cases there is no kind, but an existing +where+ conditions.
143
+ # This will then be treat as +:bool+.
144
+ kind = o.kind.present? ? visit(o.kind.expr).presence : nil
145
+ kind ||= :bool if o.wheres.present?
147
146
 
148
147
  # check for existing kind - we cannot create a node if we don't have any kind
149
148
  return unless kind
@@ -423,6 +422,7 @@ module Arel # :nodoc: all
423
422
  o
424
423
  end
425
424
 
425
+ # alias for RAW returns
426
426
  alias :visit_Integer :visit_Struct_Raw
427
427
  alias :visit_Symbol :visit_Struct_Raw
428
428
  alias :visit_Hash :visit_Struct_Raw
@@ -430,7 +430,6 @@ module Arel # :nodoc: all
430
430
  alias :visit_String :visit_Struct_Raw
431
431
  alias :visit_Arel_Nodes_SqlLiteral :visit_Struct_Raw
432
432
 
433
-
434
433
  # used by insert / update statements.
435
434
  # does not claim / assign any values!
436
435
  # returns a Hash of key => value pairs
@@ -453,6 +452,7 @@ module Arel # :nodoc: all
453
452
  o.name
454
453
  end
455
454
 
455
+ # alias for ATTRIBUTE returns
456
456
  alias :visit_Arel_Attributes_Attribute :visit_Struct_Attribute
457
457
  alias :visit_Arel_Nodes_UnqualifiedColumn :visit_Struct_Attribute
458
458
  alias :visit_ActiveModel_Attribute_FromUser :visit_Struct_Attribute
@@ -473,6 +473,7 @@ module Arel # :nodoc: all
473
473
  o.value
474
474
  end
475
475
 
476
+ # alias for BIND returns
476
477
  alias :visit_ActiveModel_Attribute :visit_Struct_BindValue
477
478
  alias :visit_ActiveRecord_Relation_QueryAttribute :visit_Struct_BindValue
478
479
 
@@ -484,6 +485,7 @@ module Arel # :nodoc: all
484
485
  collect(o)
485
486
  end
486
487
 
488
+ # alias for ARRAY returns
487
489
  alias :visit_Set :visit_Array
488
490
  end
489
491
  end
@@ -89,8 +89,7 @@ module Arel # :nodoc: all
89
89
  # prepare query
90
90
  claim(:type, ::ElasticsearchRecord::Query::TYPE_INDEX_UPDATE_SETTING)
91
91
 
92
- # special overcomplicated blocks to assign a hash of settings directly to the body...
93
- # todo: refactor this in future versions
92
+ # overcomplicated blocks to assign a hash of settings directly to the body
94
93
  assign(:__query__, {}) do
95
94
  assign(:body, {}) do
96
95
  resolve(o.items, :visit_TableSettingDefinition)
@@ -9,7 +9,7 @@ module ElasticsearchRecord
9
9
  module VERSION
10
10
  MAJOR = 1
11
11
  MINOR = 5
12
- TINY = 2
12
+ TINY = 3
13
13
  PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
@@ -61,21 +61,17 @@ module ElasticsearchRecord
61
61
 
62
62
  private
63
63
 
64
- # WARNING: BETA!!!
65
64
  # Resolves the +auto_increment+ status from the tables +_meta+ attributes.
66
65
  def _insert_with_auto_increment(values)
67
- # check, if the primary_key's values is provided.
68
- # so, no need to resolve a +auto_increment+ value, but provide
69
- if values[self.primary_key].present?
70
- # resolve id from values
71
- id = values[self.primary_key]
72
-
66
+ # check, if the primary_key's value is provided.
67
+ # so, no need to resolve a +auto_increment+ value, but provide the id directly
68
+ if (id = values[self.primary_key]).present?
73
69
  yield({id: id})
74
70
  elsif auto_increment?
75
71
  ids = [
76
- # we try to resolve the current-auto-increment value from the tables meta
72
+ # try to resolve the current-auto-increment value from the tables meta
77
73
  connection.table_metas(self.table_name).dig('auto_increment').to_i + 1,
78
- # for secure reasons, we also resolve the current maximum value for the primary key
74
+ # for secure reasons: also resolve the current maximum value for the primary key
79
75
  self.unscoped.all.maximum(self.primary_key).to_i + 1
80
76
  ]
81
77
 
@@ -184,35 +184,36 @@ module ElasticsearchRecord
184
184
 
185
185
  # creates a condition on the relation.
186
186
  # There are several possibilities to call this method.
187
+ #
187
188
  # @example
188
189
  # # create a simple 'term' condition on the query[:filter] param
189
- # where({name: 'hans'})
190
- # > query[:filter] << { term: { name: 'hans' } }
190
+ # where({name: 'hans'})
191
+ # #> query[:filter] << { term: { name: 'hans' } }
191
192
  #
192
193
  # # create a simple 'terms' condition on the query[:filter] param
193
- # where({name: ['hans','peter']})
194
- # > query[:filter] << { terms: { name: ['hans','peter'] } }
194
+ # where({name: ['hans','peter']})
195
+ # #> query[:filter] << { terms: { name: ['hans','peter'] } }
195
196
  #
196
- # where(:must_not, term: {name: 'horst'})
197
- # where(:query_string, "(new york OR dublin)", fields: ['name','description'])
197
+ # where(:must_not, term: {name: 'horst'})
198
+ # where(:query_string, "(new york OR dublin)", fields: ['name','description'])
198
199
  #
199
200
  # # nested array
200
201
  # where([ [:filter, {...}], [:must_not, {...}]])
201
- def where(*args)
202
- return none if args[0] == :none
203
-
204
- super
205
- end
206
-
202
+ #
203
+ # # invalidate query
204
+ # where(:none)
205
+ #
207
206
  def where!(opts, *rest)
208
207
  # :nodoc:
209
208
  case opts
210
- # check the first provided parameter +opts+ and validate, if this is an alias for "must, must_not, should or filter"
211
- # if true, we expect the rest[0] to be a hash.
212
- # For this correlation we forward this as RAW-data without check & manipulation
213
209
  when Symbol
214
210
  case opts
211
+ when :none
212
+ none!
215
213
  when :filter, :must, :must_not, :should
214
+ # check the first provided parameter +opts+ and validate, if this is an alias for "must, must_not, should or filter".
215
+ # if true, we expect the rest[0] to be a hash.
216
+ # For this correlation we forward this as RAW-data without check & manipulation
216
217
  send("#{opts}!", *rest)
217
218
  else
218
219
  raise ArgumentError, "Unsupported prefix type '#{opts}'. Allowed types are: :filter, :must, :must_not, :should"
@@ -220,9 +221,7 @@ module ElasticsearchRecord
220
221
  when Array
221
222
  # check if this is a nested array of multiple [<kind>,<data>]
222
223
  if opts[0].is_a?(Array)
223
- opts.each { |item|
224
- where!(*item)
225
- }
224
+ opts.each { |item| where!(*item) }
226
225
  else
227
226
  where!(*opts, *rest)
228
227
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticsearch_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Gonsior
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-12 00:00:00.000000000 Z
11
+ date: 2023-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord