hyper-resource 1.0.0.lap40 → 1.0.0.lap41
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
|
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
|