query-interface-client 1.3.2 → 1.3.3
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
|
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
|