amber_odm 1.0.0 → 1.0.1

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
  SHA256:
3
- metadata.gz: 3fd8519f176d5e86f6ddb8307e77864de6511ee3af28e0f89873bb57a4ac51e7
4
- data.tar.gz: 3684de6f1e2f52c1da8b04c55fb47b6e5e13da36fbe3eb843c0929cf5ab49dc6
3
+ metadata.gz: 81c02da4d649aa4475fb8c412d1c208343a0acca6a4bc36e5441b75531b4043c
4
+ data.tar.gz: efdf4716b9eed68706e0fae926b173fe9ae3dabeed1d0b89265a3bb2e40c7b1c
5
5
  SHA512:
6
- metadata.gz: e0fb595ffd51eb627493a777347636200c06713041802d65aa41968140bc0ed361e74e23a0c4d6b73cf8925d2994f4fddcdf52a1fb55541b56572d2912f53da9
7
- data.tar.gz: 2f36be5406925f55a1f2329518891982da4263543526c1d01e244d853b30207a555be16201c685eeb8caa8a0e5b1faacb07b79ba094d70f77ee843edac0f98bc
6
+ metadata.gz: f286e84d6745918f9a57b3ca6024f84d7a78575d722b2ffc227130db74f066b1964cd07c61a1ad3b2a986eb7d8bf9b215d2834d752d9f908fead6cd204a9e14e
7
+ data.tar.gz: f8c658abd1ff7204eea472803cbe5a2b84ba5c4b9ea5a444317f7403a9f5f651c5f4624a7d2c86854773d4d4710220efb0bd9d76c2a994c5729826480c162509
@@ -1,3 +1,3 @@
1
1
  module AmberODM
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
data/lib/amber_odm.rb CHANGED
@@ -25,7 +25,7 @@ module AmberODM
25
25
  end
26
26
 
27
27
  class AttrInitializer
28
- attr_reader :document
28
+ attr_reader :_document
29
29
 
30
30
  def initialize(document)
31
31
  self.class.fields.each do |field|
@@ -49,7 +49,7 @@ module AmberODM
49
49
  end
50
50
 
51
51
  def nil?
52
- document.nil? || document.empty?
52
+ _document.nil? || _document.empty?
53
53
  end
54
54
 
55
55
  def self.array_to_h(array)
@@ -67,7 +67,7 @@ module AmberODM
67
67
  def to_h
68
68
  hash = {}
69
69
  known_fields = self.class.fields
70
- unknown_fields = document.keys - known_fields
70
+ unknown_fields = _document.keys - known_fields
71
71
  unknown_fields.reject! { |field| field.start_with?('_') }
72
72
  known_fields.each do |field|
73
73
  value = send(field)
@@ -80,7 +80,7 @@ module AmberODM
80
80
  end
81
81
  end
82
82
  unknown_fields.each do |field|
83
- value = document[field]
83
+ value = _document[field]
84
84
  hash[field] = value
85
85
  end
86
86
 
@@ -90,17 +90,19 @@ module AmberODM
90
90
 
91
91
  class Document < AttrInitializer
92
92
 
93
- attr_reader :_id, :_score, :sort
93
+ attr_reader :_id, :_score, :sort, :_seq_no, :_primary_term
94
94
 
95
95
  def initialize(document)
96
96
  @_id = document&.dig('_id').dup
97
97
  @_score = document&.dig('_score').dup
98
98
  @sort = document&.dig('sort').dup
99
+ @_seq_no = document&.dig('_seq_no').dup
100
+ @_primary_term = document&.dig('_primary_term').dup
99
101
  self.class.fields.each do |field|
100
102
  document_value = document&.dig('_source')&.dig(field).dup
101
- send("#{field}=", document_value) unless document_value.nil?
103
+ send("#{field}=", document_value)
102
104
  end
103
- instance_variable_set('@document', document)
105
+ instance_variable_set('@_document', document)
104
106
  end
105
107
 
106
108
  # @return [Symbol, nil]
@@ -113,6 +115,10 @@ module AmberODM
113
115
  nil
114
116
  end
115
117
 
118
+ def self.use_seq_verification
119
+ true
120
+ end
121
+
116
122
  # @return [Elasticsearch::Client] The ES client
117
123
  def self.client
118
124
  Connector.database(db_name&.to_sym)
@@ -129,7 +135,6 @@ module AmberODM
129
135
  # @return [Array<self>] The documents
130
136
  def search(query, _source: [], sort: [], search_after: [], size: 0)
131
137
  # self.class.validate_fields_from_stages(query, _source, sort)
132
-
133
138
  if _source.empty?
134
139
  _source = self.class.fields
135
140
  end
@@ -139,6 +144,7 @@ module AmberODM
139
144
  end
140
145
 
141
146
  body = { _source: _source, query: query }
147
+ body[:seq_no_primary_term] = true if self.class.use_seq_verification
142
148
  body[:sort] = sort unless sort.empty?
143
149
  body[:search_after] = search_after unless search_after.empty?
144
150
  body[:size] = size unless size.zero?
@@ -174,13 +180,18 @@ module AmberODM
174
180
  end
175
181
  end
176
182
 
177
- {
183
+ update_hash = {
178
184
  update: {
179
185
  _index: self.class.index_name&.to_s,
180
186
  _id: _id,
181
187
  data: { doc: aggregation_hash }
182
188
  }
183
189
  }
190
+ if use_seq_verification
191
+ update_hash[:update][:if_seq_no] = _seq_no
192
+ update_hash[:update][:if_primary_term] = _primary_term
193
+ end
194
+ update_hash
184
195
  end
185
196
 
186
197
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amber_odm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - mikael
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-28 00:00:00.000000000 Z
11
+ date: 2023-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -145,8 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  requirements: []
148
- rubyforge_project:
149
- rubygems_version: 2.7.7
148
+ rubygems_version: 3.4.1
150
149
  signing_key:
151
150
  specification_version: 4
152
151
  summary: ElasticSearch ODM