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