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: 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