query-interface-client 1.3.1 → 1.3.2
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: bd54e88c610df20cb66799bd6f6c319006c04ad4
|
4
|
+
data.tar.gz: a8343318ddf04e18209350f160c485618cc12eb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00ab57aee8ed655b64752287a6c088500a5f86a94b0a64f4573c4f4e41d27c157f6c7935af24ba66a750477964fb730c9898f5f0a3438cfaed70f8e357a0af17
|
7
|
+
data.tar.gz: 30a0e9f60fe92cf9d4ea08a313dd5ee4cbee714753cf47c823db40bf21116696f82c70c2dc168626f8e4a71981ee08f3f79b5479929d4204481c758ea47a290d
|
@@ -16,7 +16,7 @@ module QueryInterface
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def instantiate(data)
|
19
|
-
(self.result_model ? self.result_model.
|
19
|
+
(self.result_model ? self.result_model.new_from_hash(data) : self.model.new_from_hash(data))
|
20
20
|
end
|
21
21
|
|
22
22
|
def instantiate_collection(parsed_data)
|
@@ -124,7 +124,11 @@ module QueryInterface
|
|
124
124
|
if parsed_data[:data].is_a?(Array)
|
125
125
|
self.instantiate_collection(parsed_data)
|
126
126
|
else
|
127
|
-
|
127
|
+
unless parsed_data[:data].empty?
|
128
|
+
self.instantiate(parsed_data[:data])
|
129
|
+
else
|
130
|
+
nil
|
131
|
+
end
|
128
132
|
end
|
129
133
|
end
|
130
134
|
|
@@ -10,10 +10,10 @@ module QueryInterface
|
|
10
10
|
raise "Unknown Type #{type}"
|
11
11
|
end
|
12
12
|
self.type = conversion
|
13
|
-
self.primary = options.delete(:primary) {false}
|
14
|
-
self.update = options.delete(:update) {true}
|
15
|
-
self.array = options.delete(:array) {false}
|
16
|
-
self.default = options.delete(:default) {nil}
|
13
|
+
self.primary = options.delete(:primary) { false }
|
14
|
+
self.update = options.delete(:update) { true }
|
15
|
+
self.array = options.delete(:array) { false }
|
16
|
+
self.default = options.delete(:default) { lambda { nil } }
|
17
17
|
end
|
18
18
|
|
19
19
|
def run_get_conversion(value)
|
@@ -82,41 +82,58 @@ module QueryInterface
|
|
82
82
|
|
83
83
|
def new_collection(collection)
|
84
84
|
collection[:data].map do |data|
|
85
|
-
self.
|
85
|
+
self.new_from_hash(data)
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
89
|
def get(path, params={})
|
90
90
|
data = self.get_raw(path: path, params: params)[:parsed_data][:data]
|
91
|
-
self.
|
91
|
+
self.new_from_hash(data)
|
92
|
+
end
|
93
|
+
|
94
|
+
def new_from_hash(data={})
|
95
|
+
instance = self.new
|
96
|
+
instance.assign_attributes(data)
|
97
|
+
instance
|
92
98
|
end
|
93
99
|
end
|
94
100
|
|
95
101
|
module InstanceMethods
|
96
102
|
def initialize(data={})
|
97
|
-
self.
|
103
|
+
self.properties.each do |name, property|
|
104
|
+
default = self.instance_exec(&property.default)
|
105
|
+
self.set_value(name, default)
|
106
|
+
end
|
107
|
+
self.assign_attributes(data, run_conversions: false)
|
98
108
|
end
|
99
109
|
|
100
110
|
def properties
|
101
111
|
self.class.instance_variable_get(:@properties)
|
102
112
|
end
|
103
113
|
|
104
|
-
def
|
114
|
+
def assign_attributes(data, options={})
|
115
|
+
self.errors.clear()
|
116
|
+
run_conversions = options.delete(:run_conversions) {true}
|
105
117
|
data.each do |name, value|
|
106
118
|
name = name.to_sym
|
107
119
|
if self.properties.has_key?(name)
|
108
120
|
property = self.properties[name]
|
109
|
-
|
121
|
+
if run_conversions
|
122
|
+
begin
|
123
|
+
converted = property.run_set_conversion(value)
|
124
|
+
rescue
|
125
|
+
self.errors.add(name, "Type conversion failed")
|
126
|
+
self.set_value(name, value)
|
127
|
+
else
|
128
|
+
self.set_value(name, converted)
|
129
|
+
end
|
130
|
+
else
|
131
|
+
self.set_value(name, value)
|
132
|
+
end
|
110
133
|
else
|
111
134
|
self.additional_values[name] = value
|
112
135
|
end
|
113
136
|
end
|
114
|
-
# Initialize missing fields to whatever their default is
|
115
|
-
(self.properties.keys - data.keys.map(&:to_sym)).each do |name|
|
116
|
-
property = self.properties[name]
|
117
|
-
default = property.default
|
118
|
-
self.set_value(name, default.is_a?(Enumerable) ? default.dup : default)
|
119
|
-
end
|
120
137
|
end
|
121
138
|
|
122
139
|
def to_attributes(additional_data={})
|
@@ -129,13 +146,14 @@ module QueryInterface
|
|
129
146
|
end
|
130
147
|
|
131
148
|
def save(additional_data={})
|
149
|
+
return false unless (self.errors.empty? && self.valid?)
|
132
150
|
if self.persisted? && self.dirty?
|
133
151
|
result = self.put_raw(params: self.to_attributes(additional_data))
|
134
152
|
return result[:response].success?
|
135
153
|
elsif !self.persisted?
|
136
154
|
result = self.class.post_raw(params: self.to_attributes(additional_data))
|
137
155
|
if result[:response].success?
|
138
|
-
self.
|
156
|
+
self.assign_attributes(result[:parsed_data][:data])
|
139
157
|
return true
|
140
158
|
else
|
141
159
|
return false
|
@@ -150,15 +168,6 @@ module QueryInterface
|
|
150
168
|
self.save
|
151
169
|
end
|
152
170
|
|
153
|
-
def assign_attributes(attributes)
|
154
|
-
attributes.each do |name, value|
|
155
|
-
method = "#{name}=".to_sym
|
156
|
-
if self.respond_to?(method)
|
157
|
-
self.send(method, value)
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
171
|
def property_values
|
163
172
|
self._property_values ||= {}
|
164
173
|
end
|
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.2
|
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-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rs_paginator
|