hyper-resource 1.0.0.lap40 → 1.0.0.lap41
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f03f528e8e3a65402ffabbf5805326de64d87c9bfc3bbe781dcf7077364008f
|
4
|
+
data.tar.gz: e3f976305a3674a6304279cb873a5a4669a470ebf422adba29b2219bb22222e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f53d17dca78441ce59c18f3057b2a16916aac0b47996a0e2cdc430888ec043db6516a873ede2e6712d53d4389123d3539d0fabf35092efa6e37da5355f93f6f8
|
7
|
+
data.tar.gz: c595b76a5b550ac95b7fe7fb0aa1e28f2bd936ffd5e92a60f2093ba1f4c08c206b3f9d99549cad5ea3d6f2c244e58c99a8ebd303d3c1037db915d397b510d66d
|
@@ -3,7 +3,7 @@ module HyperRecord
|
|
3
3
|
|
4
4
|
def new(record_hash = {})
|
5
5
|
if record_hash.has_key?(:id)
|
6
|
-
record = _record_cache[record_hash[:id]]
|
6
|
+
record = _record_cache[record_hash[:id].to_s]
|
7
7
|
if record
|
8
8
|
record.instance_variable_get(:@properties_hash).merge!(record_hash)
|
9
9
|
return record
|
@@ -15,21 +15,15 @@ module HyperRecord
|
|
15
15
|
def all
|
16
16
|
_register_class_observer
|
17
17
|
if _class_fetch_states[:all] == 'f'
|
18
|
-
|
19
|
-
_record_cache.each_value { |record|
|
20
|
-
return
|
18
|
+
collection = HyperRecord::Collection.new
|
19
|
+
_record_cache.each_value { |record| collection.push(record) }
|
20
|
+
return collection
|
21
21
|
end
|
22
22
|
_promise_get("#{resource_base_uri}.json").then do |response|
|
23
|
-
|
24
|
-
klass_key = klass_name.pluralize
|
25
|
-
response.json[klass_key].each do |record_json|
|
26
|
-
self.new(record_json[klass_name])
|
27
|
-
end
|
23
|
+
collection = _convert_array_to_collection(response.json[self.to_s.underscore.pluralize])
|
28
24
|
_class_fetch_states[:all] = 'f'
|
29
25
|
_notify_class_observers
|
30
|
-
|
31
|
-
_record_cache.each_value { |record| record_collection.push(record) }
|
32
|
-
record_collection
|
26
|
+
collection
|
33
27
|
end.fail do |response|
|
34
28
|
error_message = "#{self.to_s}.all failed to fetch records!"
|
35
29
|
`console.error(error_message)`
|
@@ -82,16 +76,17 @@ module HyperRecord
|
|
82
76
|
end
|
83
77
|
|
84
78
|
def find(id)
|
85
|
-
|
79
|
+
sid = id.to_s
|
80
|
+
return _record_cache[sid] if _record_cache.has_key?(sid) && _class_fetch_states["record_#{id}"] == 'f'
|
86
81
|
observer = React::State.current_observer
|
87
|
-
record_in_progress = if _record_cache.has_key?(
|
88
|
-
_record_cache[
|
82
|
+
record_in_progress = if _record_cache.has_key?(sid)
|
83
|
+
_record_cache[sid]
|
89
84
|
else
|
90
85
|
self.new(id: id)
|
91
86
|
end
|
92
87
|
record_in_progress_key = "#{self.to_s}_#{record_in_progress.object_id}"
|
93
88
|
React::State.get_state(observer, record_in_progress_key) if observer
|
94
|
-
return _record_cache[
|
89
|
+
return _record_cache[sid] if _record_cache.has_key?(sid) && _class_fetch_states["record_#{id}"] == 'i'
|
95
90
|
_find_record(id, record_in_progress).then do
|
96
91
|
React::State.set_state(observer, record_in_progress_key, `Date.now() + Math.random()`) if observer
|
97
92
|
end
|
@@ -99,8 +94,9 @@ module HyperRecord
|
|
99
94
|
end
|
100
95
|
|
101
96
|
def find_record(id)
|
102
|
-
|
103
|
-
|
97
|
+
sid = id.to_s
|
98
|
+
record_in_progress = if _record_cache.has_key?(sid)
|
99
|
+
_record_cache[sid]
|
104
100
|
else
|
105
101
|
self.new(id: id)
|
106
102
|
end
|
@@ -108,11 +104,20 @@ module HyperRecord
|
|
108
104
|
end
|
109
105
|
|
110
106
|
def find_record_by(hash)
|
111
|
-
|
107
|
+
if hash.has_key?[:id] && _record_cache.has_key?(hash[:id].to_s)
|
108
|
+
record = _record_cache[hash[:id].to_s]
|
109
|
+
found = true
|
110
|
+
hash.each do |k,v|
|
111
|
+
if record.send(k) != v
|
112
|
+
found = false
|
113
|
+
break
|
114
|
+
end
|
115
|
+
end
|
116
|
+
return record if found
|
117
|
+
end
|
112
118
|
# TODO needs clarification about how to call the endpoint
|
113
|
-
_promise_get("#{resource_base_uri}/#{id}.json").then do |
|
114
|
-
|
115
|
-
_record_cache[hash] = record
|
119
|
+
_promise_get("#{resource_base_uri}/#{id}.json").then do |response|
|
120
|
+
self.new(response.json[self.to_s.underscore])
|
116
121
|
end
|
117
122
|
end
|
118
123
|
|
@@ -244,7 +249,7 @@ module HyperRecord
|
|
244
249
|
end
|
245
250
|
|
246
251
|
def record_cached?(id)
|
247
|
-
_record_cache.has_key?(id)
|
252
|
+
_record_cache.has_key?(id.to_s)
|
248
253
|
end
|
249
254
|
|
250
255
|
def property(name, options = {})
|
@@ -328,9 +333,7 @@ module HyperRecord
|
|
328
333
|
else
|
329
334
|
_register_class_observer
|
330
335
|
self._promise_get_or_patch("#{resource_base_uri}/scopes/#{name}.json", *args).then do |response_json|
|
331
|
-
|
332
|
-
nh = ch[name]
|
333
|
-
scopes[name_args] = _convert_array_to_collection(nh)
|
336
|
+
scopes[name_args] = _convert_array_to_collection(response_json[self.to_s.underscore][name])
|
334
337
|
_class_fetch_states[name_args] = 'f'
|
335
338
|
_notify_class_observers
|
336
339
|
scopes[name_args]
|
@@ -367,7 +370,7 @@ module HyperRecord
|
|
367
370
|
if record_hash[klass_key][:id].nil?
|
368
371
|
record_class.new(record_hash[klass_key])
|
369
372
|
else
|
370
|
-
record = record_class._record_cache[record_hash[klass_key][:id]]
|
373
|
+
record = record_class._record_cache[record_hash[klass_key][:id].to_s]
|
371
374
|
if record.nil?
|
372
375
|
record = record_class.new(record_hash[klass_key])
|
373
376
|
else
|
@@ -54,7 +54,7 @@ module HyperRecord
|
|
54
54
|
_mutate_state
|
55
55
|
|
56
56
|
# cache in global cache
|
57
|
-
self.class._record_cache[@properties_hash[:id]] = self if @properties_hash.has_key?(:id)
|
57
|
+
self.class._record_cache[@properties_hash[:id].to_s] = self if @properties_hash.has_key?(:id)
|
58
58
|
end
|
59
59
|
|
60
60
|
### reactive api
|
@@ -77,11 +77,10 @@ module HyperRecord
|
|
77
77
|
end
|
78
78
|
|
79
79
|
def method_missing(method, arg)
|
80
|
+
_register_observer
|
80
81
|
if method.end_with?('=')
|
81
|
-
_register_observer
|
82
82
|
@changed_properties_hash[method.chop] = arg
|
83
83
|
else
|
84
|
-
_register_observer
|
85
84
|
if @changed_properties_hash.has_key?(method)
|
86
85
|
@changed_properties_hash[method]
|
87
86
|
else
|
@@ -220,7 +219,7 @@ module HyperRecord
|
|
220
219
|
def _local_destroy
|
221
220
|
_register_observer
|
222
221
|
@destroyed = true
|
223
|
-
self.class._record_cache.delete(@properties_hash[:id])
|
222
|
+
self.class._record_cache.delete(@properties_hash[:id].to_s)
|
224
223
|
@registered_collections.dup.each do |collection|
|
225
224
|
collection.delete(self)
|
226
225
|
end
|
@@ -260,7 +259,7 @@ module HyperRecord
|
|
260
259
|
# are a workaround for safari, to get it updating correctly
|
261
260
|
klass_name = data[:cause][:record_type]
|
262
261
|
c_record_class = Object.const_get(klass_name)
|
263
|
-
if c_record_class._record_cache.has_key?(data[:cause][:id])
|
262
|
+
if c_record_class._record_cache.has_key?(data[:cause][:id].to_s)
|
264
263
|
c_record = c_record_class.find(data[:cause][:id])
|
265
264
|
if `Date.parse(#{c_record.updated_at}) >= Date.parse(#{data[:cause][:updated_at]})`
|
266
265
|
if @fetch_states[data[:relation]] == 'f'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyper-resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.lap41
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Biedermann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|