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 +4 -4
- data/lib/amber_odm/version.rb +1 -1
- data/lib/amber_odm.rb +20 -9
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81c02da4d649aa4475fb8c412d1c208343a0acca6a4bc36e5441b75531b4043c
|
4
|
+
data.tar.gz: efdf4716b9eed68706e0fae926b173fe9ae3dabeed1d0b89265a3bb2e40c7b1c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f286e84d6745918f9a57b3ca6024f84d7a78575d722b2ffc227130db74f066b1964cd07c61a1ad3b2a986eb7d8bf9b215d2834d752d9f908fead6cd204a9e14e
|
7
|
+
data.tar.gz: f8c658abd1ff7204eea472803cbe5a2b84ba5c4b9ea5a444317f7403a9f5f651c5f4624a7d2c86854773d4d4710220efb0bd9d76c2a994c5729826480c162509
|
data/lib/amber_odm/version.rb
CHANGED
data/lib/amber_odm.rb
CHANGED
@@ -25,7 +25,7 @@ module AmberODM
|
|
25
25
|
end
|
26
26
|
|
27
27
|
class AttrInitializer
|
28
|
-
attr_reader :
|
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
|
-
|
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 =
|
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 =
|
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)
|
103
|
+
send("#{field}=", document_value)
|
102
104
|
end
|
103
|
-
instance_variable_set('@
|
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.
|
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-
|
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
|
-
|
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
|