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: b1bae140804e9630f4b1187a1f06cb8441cf40d784ebd6cd2dbd4c00851806a5
4
- data.tar.gz: 632f717c16f5023cf55cb323bc481025fc25be3c203fce90b3866f438c882684
3
+ metadata.gz: 7f03f528e8e3a65402ffabbf5805326de64d87c9bfc3bbe781dcf7077364008f
4
+ data.tar.gz: e3f976305a3674a6304279cb873a5a4669a470ebf422adba29b2219bb22222e7
5
5
  SHA512:
6
- metadata.gz: 537abb30fdfa234afa6dbb8f4751655859d615ff582b58916d30d7e0e5ed78223e551a451b34b36c569a3f7599da384ebcdaee67cd1d0c396d826bffb1a6c63c
7
- data.tar.gz: 86c8360462145706f9f978df2d2bd6664f15a93235cb90fe28c60637f9559095e2f3b254fc164d344b8d69c6d3e72db6f93116f533cb841552dd43d0ac0da74e
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
- record_collection = HyperRecord::Collection.new
19
- _record_cache.each_value { |record| record_collection.push(record) }
20
- return record_collection
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
- klass_name = self.to_s.underscore
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
- record_collection = HyperRecord::Collection.new
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
- return _record_cache[id] if _record_cache.has_key?(id) && _class_fetch_states["record_#{id}"] == 'f'
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?(id)
88
- _record_cache[id]
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[id] if _record_cache.has_key?(id) && _class_fetch_states["record_#{id}"] == 'i'
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
- record_in_progress = if _record_cache.has_key?(id)
103
- _record_cache[id]
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
- return _record_cache[hash] if _record_cache.has_key?(hash)
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 |reponse|
114
- record = self.new(response.json[self.to_s.underscore])
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
- ch = response_json[self.to_s.underscore]
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'
@@ -1,5 +1,5 @@
1
1
  module Hyperloop
2
2
  module Resource
3
- VERSION = '1.0.0.lap40'
3
+ VERSION = '1.0.0.lap41'
4
4
  end
5
5
  end
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.lap40
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 00:00:00.000000000 Z
11
+ date: 2018-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal