amber_odm 1.0.0 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/amber_odm/version.rb +1 -1
- data/lib/amber_odm.rb +20 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43593d1cb29a6398f1f9714cfc3420572e34ec7d5b60a203962a7d2d861bb49d
|
4
|
+
data.tar.gz: 2cd1a1099a6b54e5c247275cf78d007f3bbaaf0946bc98f31ce7d26ffadbaf89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9da56893e60c15c2f508103e504c44edb784b0f7b5cfbd2202308f9c2fb5cd45d59e4c033179ef487ae036507613608e42c757d6bbb433bf9c7a5d6ff6f638c
|
7
|
+
data.tar.gz: 4ecf01b1bce446602f06548ec427ad2550416c6de0951d38e74e8decfc25594866762fbfe3941b55f7624a179a71705029bcd0a0e81f4cb529d4d8c88710a28e
|
data/Gemfile.lock
CHANGED
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 self.class.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.2
|
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-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|