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