hyper-resource 1.0.0.lap87 → 1.0.0.lap88

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: 4d276e459e66303c270a3fd19ad817000f7591604673852f2084c1b591b1bf4a
4
- data.tar.gz: 14cfa291e0a603badf2f8e4cb9484e3996e5708a2cc059ad1dc5b8ef111784f3
3
+ metadata.gz: 9506b3bd2991d06242e006705fd6d591ba1b044bcd1df529b26f295a029d6b3d
4
+ data.tar.gz: 70e328ea0a95c3890e63144b1847c1500995aae931d7c50a1bf41957f73f620d
5
5
  SHA512:
6
- metadata.gz: d4d5e94abd9001519c6455257887eec88937c9dadfa1f41527fc5e1516e1d18432e9c6ea87497d041ed2d599985a80d47ae6fc9b4b20ced7d5613c75fb7aebd8
7
- data.tar.gz: 72a52d2bc6dce43d4c1c2d2c6827494629786782b58dcb5e9ee7d6bffb822a83830bbd957a15ed9e2d4a56fad9459e69b63f9b107f77822a98a18aaabe40c8af
6
+ metadata.gz: 9ac4b0885006ab61eefa49d93dd7e722d9c17554adb25f4809d5a1af77d64c71661a3dcd44e157498d8f009a9cd25ca294d310039820144e71d8e30076ab4e5a
7
+ data.tar.gz: 706c93b799aa2c50412f8e4c2a690c5e1f72341036f1616727b037a6a088f1795f2cb9f1dd0ee57e827b09784faf0a3a5c9669db4a471bd15b2a99ed2b5230ae
@@ -139,6 +139,7 @@ module HyperRecord
139
139
  unless @rest_methods.has_key?(name)
140
140
  @rest_methods[name] = options
141
141
  @rest_methods[name] = { result: options[:default_result] }
142
+ @update_on_link[name] = {}
142
143
  end
143
144
  raise "#{self.class.to_s}[_no_id_].#{name}, can't execute instance collection_query_method without id!" unless self.id
144
145
  self.class._promise_get_or_patch("#{resource_base_uri}/#{self.id}/methods/#{name}.json?timestamp=#{`Date.now() + Math.random()`}").then do |response_json|
@@ -160,6 +161,7 @@ module HyperRecord
160
161
  unless @rest_methods.has_key?(name)
161
162
  @rest_methods[name] = options
162
163
  @rest_methods[name] = { result: options[:default_result] }
164
+ @update_on_link[name] = {}
163
165
  end
164
166
  unless @fetch_states.has_key?(name) && 'fi'.include?(@fetch_states[name])
165
167
  self.send("promise_#{name}")
@@ -21,6 +21,7 @@ module HyperRecord
21
21
  @state_key = "#{self.class.to_s}_#{self.object_id}"
22
22
  @observers = Set.new
23
23
  @registered_collections = Set.new
24
+ @update_on_link = {}
24
25
 
25
26
  _initialize_from_hash(record_hash)
26
27
 
@@ -221,6 +222,12 @@ module HyperRecord
221
222
  payload_hash = other_record.to_hash
222
223
  self.class._promise_post("#{resource_base_uri}/#{self.id}/relations/#{relation_name}.json", { data: payload_hash }).then do |response|
223
224
  other_record.instance_variable_get(:@properties).merge!(response.json[other_record.class.to_s.underscore])
225
+ @update_on_link.keys.each do |method|
226
+ @fetch_states[method] = 'u'
227
+ end
228
+ other_record.instance_variable_get(:@update_on_link).keys.each do |method|
229
+ other_record.instance_variable_get(:@fetch_states)[method] = 'u'
230
+ end
224
231
  _notify_observers
225
232
  other_record._notify_observers
226
233
  self
@@ -275,6 +282,12 @@ module HyperRecord
275
282
  raise "No relation for record of type #{other_record.class}" unless reflections.has_key?(relation_name)
276
283
  @relations[relation_name].delete_if { |cr| cr == other_record } if !called_from_collection && @fetch_states[relation_name] == 'f'
277
284
  self.class._promise_delete("#{resource_base_uri}/#{@properties[:id]}/relations/#{relation_name}.json?record_id=#{other_record.id}").then do |response|
285
+ @update_on_link.keys.each do |method|
286
+ @fetch_states[method] = 'u'
287
+ end
288
+ other_record.instance_variable_get(:@update_on_link).keys.each do |method|
289
+ other_record.instance_variable_get(:@fetch_states)[method] = 'u'
290
+ end
278
291
  _notify_observers
279
292
  other_record._notify_observers
280
293
  self
@@ -339,6 +352,10 @@ module HyperRecord
339
352
  if data[:cause][:destroyed]
340
353
  c_record.instance_variable_set(:@remotely_destroyed, true)
341
354
  c_record._local_destroy
355
+ else
356
+ c_record.instance_variable_get(:@update_on_link).keys.each do |method|
357
+ c_record.instance_variable_get(:@fetch_states)[method] = 'u'
358
+ end
342
359
  end
343
360
  if `Date.parse(#{c_record.updated_at}) >= Date.parse(#{data[:cause][:updated_at]})`
344
361
  if @fetch_states[data[:relation]] == 'f'
@@ -350,9 +367,12 @@ module HyperRecord
350
367
  end
351
368
  end
352
369
  @fetch_states[data[:relation]] = 'u'
353
- send("promise_#{data[:relation]}").then do |collection|
370
+ @update_on_link.keys.each do |method|
371
+ @fetch_states[method] = 'u'
372
+ end
373
+ send("promise_#{data[:relation]}").then do |_collection|
354
374
  _notify_observers
355
- end.fail do |response|
375
+ end.fail do |_response|
356
376
  error_message = "#{self}[#{self.id}].#{data[:relation]} failed to update!"
357
377
  `console.error(error_message)`
358
378
  end
@@ -365,9 +385,9 @@ module HyperRecord
365
385
  _notify_observers
366
386
  else
367
387
  # rest_method without params
368
- send("promise_#{data[:rest_method]}").then do |result|
388
+ send("promise_#{data[:rest_method]}").then do |_result|
369
389
  _notify_observers
370
- end.fail do |response|
390
+ end.fail do |_response|
371
391
  error_message = "#{self}[#{self.id}].#{data[:rest_method]} failed to update!"
372
392
  `console.error(error_message)`
373
393
  end
@@ -384,10 +404,10 @@ module HyperRecord
384
404
  return if `Date.parse(#{@properties[:updated_at]}) >= Date.parse(#{data[:updated_at]})`
385
405
  end
386
406
  self.class._class_fetch_states["record_#{id}"] = 'u'
387
- self.class._promise_find(@properties[:id], self).then do |record|
407
+ self.class._promise_find(@properties[:id], self).then do |_record|
388
408
  _notify_observers
389
409
  self
390
- end.fail do |response|
410
+ end.fail do |_response|
391
411
  error_message = "#{self} failed to update!"
392
412
  `console.error(error_message)`
393
413
  end
@@ -1,5 +1,5 @@
1
1
  module Hyperloop
2
2
  module Resource
3
- VERSION = '1.0.0.lap87'
3
+ VERSION = '1.0.0.lap88'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyper-resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.lap87
4
+ version: 1.0.0.lap88
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann