amber_odm 1.0.0 → 1.0.1

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: 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