query-interface-client 1.3.2 → 1.3.3
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 487a8eca13eb1048c6da5ada59a3433fbf064e7c
|
4
|
+
data.tar.gz: bcdd0bb35c96fe7eaf6002633d24bb59ebf0172e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa864ca9695e4285c62ec28c362840ae49dd107b8fdf738874d7ed1c2f7b64457e75ee79fd04e6b657d32b5cc06acfad40d2192f1d056ef1d0bf1988e97bc0a1
|
7
|
+
data.tar.gz: 37eaed9f0a9264490af219e931ceb8570dbcdf10ef6c262bdc94a398873f876bdaf7cc78cf595e17a0f38f7488b25170d04eaf56a0095ed855f901a55dbda9b6
|
@@ -28,7 +28,8 @@ module QueryInterface
|
|
28
28
|
def run_set_conversion(value)
|
29
29
|
if self.array
|
30
30
|
value ||= []
|
31
|
-
value.map { |item| self.type.apply_set(item) }
|
31
|
+
value.map { |item| self.type.apply_set(item) unless item.blank? }
|
32
|
+
.compact
|
32
33
|
else
|
33
34
|
self.type.apply_set(value) unless value.nil?
|
34
35
|
end
|
@@ -43,7 +44,7 @@ module QueryInterface
|
|
43
44
|
base.include(ActiveModel::Validations::Callbacks)
|
44
45
|
base.include(ActiveModel::Conversion)
|
45
46
|
base.instance_variable_set(:@properties, {})
|
46
|
-
base.send(:attr_accessor, :_property_values, :_additional_values, :
|
47
|
+
base.send(:attr_accessor, :_property_values, :_additional_values, :_original_values, :_destroyed)
|
47
48
|
base.extend(ClassMethods)
|
48
49
|
base.include(InstanceMethods)
|
49
50
|
end
|
@@ -58,12 +59,7 @@ module QueryInterface
|
|
58
59
|
|
59
60
|
unless property.primary || !property.update
|
60
61
|
define_method "#{name}=".to_sym do |value|
|
61
|
-
|
62
|
-
self.property_changes << name unless self.property_changes.include?(name)
|
63
|
-
self.set_value(name, value)
|
64
|
-
else
|
65
|
-
value
|
66
|
-
end
|
62
|
+
self.set_value(name, value)
|
67
63
|
end
|
68
64
|
end
|
69
65
|
|
@@ -94,6 +90,7 @@ module QueryInterface
|
|
94
90
|
def new_from_hash(data={})
|
95
91
|
instance = self.new
|
96
92
|
instance.assign_attributes(data)
|
93
|
+
instance._original_values = instance._property_values.deep_dup
|
97
94
|
instance
|
98
95
|
end
|
99
96
|
end
|
@@ -105,6 +102,7 @@ module QueryInterface
|
|
105
102
|
self.set_value(name, default)
|
106
103
|
end
|
107
104
|
self.assign_attributes(data, run_conversions: false)
|
105
|
+
self._original_values = self._property_values.deep_dup
|
108
106
|
end
|
109
107
|
|
110
108
|
def properties
|
@@ -112,7 +110,6 @@ module QueryInterface
|
|
112
110
|
end
|
113
111
|
|
114
112
|
def assign_attributes(data, options={})
|
115
|
-
self.errors.clear()
|
116
113
|
run_conversions = options.delete(:run_conversions) {true}
|
117
114
|
data.each do |name, value|
|
118
115
|
name = name.to_sym
|
@@ -122,8 +119,8 @@ module QueryInterface
|
|
122
119
|
begin
|
123
120
|
converted = property.run_set_conversion(value)
|
124
121
|
rescue
|
125
|
-
self.errors.add(name, "Type conversion failed")
|
126
122
|
self.set_value(name, value)
|
123
|
+
self.errors.add(name, "Type conversion failed")
|
127
124
|
else
|
128
125
|
self.set_value(name, converted)
|
129
126
|
end
|
@@ -147,20 +144,21 @@ module QueryInterface
|
|
147
144
|
|
148
145
|
def save(additional_data={})
|
149
146
|
return false unless (self.errors.empty? && self.valid?)
|
150
|
-
if self.persisted? && self.dirty?
|
147
|
+
return true if self.persisted? && !self.dirty?
|
148
|
+
|
149
|
+
if self.persisted?
|
151
150
|
result = self.put_raw(params: self.to_attributes(additional_data))
|
152
|
-
|
153
|
-
elsif !self.persisted?
|
151
|
+
else
|
154
152
|
result = self.class.post_raw(params: self.to_attributes(additional_data))
|
155
153
|
if result[:response].success?
|
156
154
|
self.assign_attributes(result[:parsed_data][:data])
|
157
|
-
return true
|
158
|
-
else
|
159
|
-
return false
|
160
155
|
end
|
161
|
-
else
|
162
|
-
return true
|
163
156
|
end
|
157
|
+
assign_errors(result)
|
158
|
+
status = result[:response].success?
|
159
|
+
self._original_values = self._property_values.deep_dup if status
|
160
|
+
|
161
|
+
status
|
164
162
|
end
|
165
163
|
|
166
164
|
def update_attributes(attributes)
|
@@ -176,8 +174,18 @@ module QueryInterface
|
|
176
174
|
self._additional_values ||= {}
|
177
175
|
end
|
178
176
|
|
177
|
+
def destroyed?
|
178
|
+
self._destroyed ||= false
|
179
|
+
end
|
180
|
+
|
179
181
|
def property_changes
|
180
|
-
self.
|
182
|
+
self.properties.map do |name, property|
|
183
|
+
if self.get_value(name) != self._original_values[name]
|
184
|
+
[name, {original: self._original_values[name], new: self.get_value(name)}]
|
185
|
+
else
|
186
|
+
next
|
187
|
+
end
|
188
|
+
end.compact.to_h
|
181
189
|
end
|
182
190
|
|
183
191
|
def dirty?
|
@@ -185,6 +193,7 @@ module QueryInterface
|
|
185
193
|
end
|
186
194
|
|
187
195
|
def set_value(name, value)
|
196
|
+
self.errors.delete(name)
|
188
197
|
self.property_values[name] = value
|
189
198
|
end
|
190
199
|
|
@@ -209,8 +218,18 @@ module QueryInterface
|
|
209
218
|
|
210
219
|
def destroy
|
211
220
|
result = self.delete_raw()[:parsed_data]
|
212
|
-
|
221
|
+
assign_errors(result)
|
222
|
+
self._destroyed = !self.errors.any?
|
213
223
|
end
|
224
|
+
|
225
|
+
private
|
226
|
+
|
227
|
+
def assign_errors(result)
|
228
|
+
(result[:errors] || {}).each do |name, values|
|
229
|
+
values.each { |value| self.errors.add(name, value) }
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
214
233
|
end
|
215
234
|
end
|
216
235
|
end
|
@@ -41,7 +41,7 @@ module QueryInterface
|
|
41
41
|
def member_path(path=nil, keys={})
|
42
42
|
fragments = self.resource_path_fragments.map do |fragment|
|
43
43
|
if fragment.is_a?(Symbol)
|
44
|
-
if keys.has_key?(fragment)
|
44
|
+
if keys.has_key?(fragment)
|
45
45
|
keys[fragment]
|
46
46
|
else
|
47
47
|
nil
|
@@ -67,7 +67,7 @@ module QueryInterface
|
|
67
67
|
params[:_headers] = self.default_api.options[:headers]
|
68
68
|
end
|
69
69
|
result = self.default_api.request(params)
|
70
|
-
{parsed_data: result[:parsed_data], response: result[:response]}
|
70
|
+
{parsed_data: result[:parsed_data], response: result[:response], errors: result[:errors]}
|
71
71
|
end
|
72
72
|
|
73
73
|
[:get, :post, :put, :delete].each do |method|
|
@@ -75,7 +75,7 @@ module QueryInterface
|
|
75
75
|
params = options.delete(:params) { {} }
|
76
76
|
keys = options.delete(:keys) { {} }
|
77
77
|
path = options.delete(:path)
|
78
|
-
self.raw_request(method, params, keys, path)
|
78
|
+
self.raw_request(method, params, keys, path)
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -41,11 +41,15 @@ module QueryInterface
|
|
41
41
|
end
|
42
42
|
|
43
43
|
register_type :integer do
|
44
|
-
set
|
44
|
+
set do |value|
|
45
|
+
value.blank? ? nil : value.to_i
|
46
|
+
end
|
45
47
|
end
|
46
48
|
|
47
49
|
register_type :float do
|
48
|
-
set
|
50
|
+
set do |value|
|
51
|
+
value.blank? ? nil : value.to_f
|
52
|
+
end
|
49
53
|
end
|
50
54
|
|
51
55
|
register_type :ip do
|
@@ -69,7 +73,13 @@ module QueryInterface
|
|
69
73
|
end
|
70
74
|
|
71
75
|
register_type :boolean do
|
72
|
-
set
|
76
|
+
set do |value|
|
77
|
+
if [true, 1, '1', 't', 'T', 'true', 'TRUE', 'on'].include?(value)
|
78
|
+
true
|
79
|
+
else
|
80
|
+
false
|
81
|
+
end
|
82
|
+
end
|
73
83
|
end
|
74
84
|
|
75
85
|
register_type :raw
|
data/spec/lib/lazy_query_spec.rb
CHANGED
@@ -227,7 +227,7 @@ describe QueryInterface::Client::LazyQuery do
|
|
227
227
|
query = subject.new(model)
|
228
228
|
expect(query).to receive(:copy).and_return(query)
|
229
229
|
objects = (1..10).to_a
|
230
|
-
allow(model).to receive(:
|
230
|
+
allow(model).to receive(:new_from_hash).and_return(*objects)
|
231
231
|
expect(query).to receive(:do_raw_query).and_return({parsed_data: {data: {objects: objects, total: 15}, errors: []}})
|
232
232
|
result = query.paginate
|
233
233
|
expect(query.transformations).to eq(self.transformations)
|
@@ -272,24 +272,6 @@ describe QueryInterface::Client::LazyQuery do
|
|
272
272
|
|
273
273
|
end
|
274
274
|
|
275
|
-
context "parsing" do
|
276
|
-
let(:result_model) { double("result model") }
|
277
|
-
let(:data) { double("data") }
|
278
|
-
|
279
|
-
it "parses the data via result model if set" do
|
280
|
-
query = subject.new(model)
|
281
|
-
query.result_model = result_model
|
282
|
-
expect(result_model).to receive(:parse).with(data)
|
283
|
-
query.parse(data)
|
284
|
-
end
|
285
|
-
|
286
|
-
it "parses the data via model if no result model set" do
|
287
|
-
query = subject.new(model)
|
288
|
-
expect(model).to receive(:parse).with(data)
|
289
|
-
query.parse(data)
|
290
|
-
end
|
291
|
-
end
|
292
|
-
|
293
275
|
context "to_json" do
|
294
276
|
let(:transformations) {[]}
|
295
277
|
let(:result) { double("result") }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: query-interface-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Kopecky <andreas.kopecky@radarservices.com>
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-10-
|
13
|
+
date: 2014-10-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rs_paginator
|