volt-repo_cache 0.1.7 → 0.1.8

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
  SHA1:
3
- metadata.gz: d6e67fb69f5462671adbe6c70c7d88ff76156bc7
4
- data.tar.gz: b7dacb4047656a539f2cc858f5ae88f955185d0a
3
+ metadata.gz: a949a402c250f1b85f04ae00b100102eefe77430
4
+ data.tar.gz: 077842b65264bfabbe797622dadba64fe8a8fe52
5
5
  SHA512:
6
- metadata.gz: a6438cc77fd305a203677d88ae2805a538fcebb3c672ea1a8e4ad735c1631f191557ca47a4102508692a3786c5e8584c19b94d11637cdf3de6714fb9038b7257
7
- data.tar.gz: de00eae7965eb73757fcd19154fab9c8159e345355ecbef617d2af9091158c9ae061f5bfeec206a45887c9a428dfd9933e0e7147edc847cacaa117ead803f748
6
+ metadata.gz: 2b1f68d6c457986e0b63fbcd3b0ba5fa4a3e43167e8a80f9d2ce33ba64b71f6ac4bf90eb3d7fd7908ca240ce20c66a9a6c88b10f06975b5eca108b6269dd3ddd
7
+ data.tar.gz: 987d529e193352b8b77d53240f2ce334f32477eb99c28284633e0e8837a240d61ab562de5fe9417647dc9e15dcae410fc947f38f913cdd47da24e11caeb768ac
@@ -92,6 +92,15 @@ module Volt
92
92
  @local_collection = @foreign_collection = @reciprocal = nil
93
93
  end
94
94
 
95
+ def __debug(level, file, line, method, msg = nil)
96
+ s = "#{file}[#{line}]:#{self.class.name}##{method}: #{msg}"
97
+ if RUBY_PLATFORM == 'opal'
98
+ Volt.logger.debug s
99
+ else
100
+ puts s
101
+ end
102
+ end
103
+
95
104
  end
96
105
  end
97
106
  end
@@ -52,10 +52,14 @@ module Volt
52
52
  # models are removed from @marked_from_destruction as
53
53
  # they are flushed, so we need a copy of them to enumerate
54
54
  @marked_for_destruction.values.dup.each do |e|
55
+ # __debug __method__, __LINE__, "@marked_for_destruction calling #{e.class}:#{e.id}.flush!"
55
56
  promises << e.flush!
57
+ # __debug __method__, __LINE__, "@marked_for_destruction called #{e.class}:#{e.id}.flush!"
56
58
  end
57
59
  each do |e|
60
+ # __debug __method__, __LINE__, "each calling #{e.class}:#{e.id}.flush!"
58
61
  promises << e.flush!
62
+ # __debug __method__, __LINE__, "each called #{e.class}:#{e.id}.flush!"
59
63
  end
60
64
  end
61
65
  Promise.when(*promises)
@@ -114,14 +118,16 @@ module Volt
114
118
  end
115
119
  @marked_for_destruction[model.id] = model
116
120
  __remove__(model, error_if_absent: true)
121
+ @cached_ids.delete(model.id)
117
122
  end
118
123
 
119
124
  # Called by RepoCache::Model#__destroy__.
120
125
  # Remove model from marked_for_destruction bucket.
121
126
  # Don't worry if we can't find it.
122
127
  def destroyed(model)
123
- @cached_ids.delete(model.id)
124
- @marked_for_destruction.delete(model.id)
128
+ # __debug __method__, __LINE__, "#{model.class}.id=#{model.id}"
129
+ result = @marked_for_destruction.delete(model.id)
130
+ # __debug __method__, __LINE__, "@marked_for_destruction.delete(#{model.id}) => #{result}"
125
131
  end
126
132
 
127
133
  # Collection is being notified (probably by super/self)
@@ -197,7 +203,7 @@ module Volt
197
203
  raise ArgumentError, "#{model} must be a #{model_class_name}"
198
204
  end
199
205
  if model.cached?
200
- __debug __method__, __LINE__, "id=#{model.id} model.cached?=#{model.cached?}"
206
+ # __debug __method__, __LINE__, "id=#{model.id} model.cached?=#{model.cached?}"
201
207
  raise TypeError, "model.id #{model.id} already in cache"
202
208
  end
203
209
  @cached_ids << model.id
@@ -232,7 +238,7 @@ module Volt
232
238
  end
233
239
 
234
240
  def __debug(method, line, msg = nil)
235
- s = "{__FILE__}[#{line}]:#{self.class.name}##{method}: #{msg}"
241
+ s = "#{__FILE__}[#{line}]:#{self.class.name}##{method}: #{msg}"
236
242
  if RUBY_PLATFORM == 'opal'
237
243
  Volt.logger.debug s
238
244
  else
@@ -191,15 +191,16 @@ module Volt
191
191
  fail_if_read_only(__method__)
192
192
  if @cache__marked_for_destruction
193
193
  # debug_model __method__, __LINE__, "marked for destruction so call destroy on #{to_h}"
194
- __destroy__
194
+ @cache__marked_for_destruction = false
195
+ Promise.when(__destroy__, flush_associations)
195
196
  else
196
197
  if dirty?
197
- debug_model __method__, __LINE__, "@cache__stored=#{@cache__stored} dirty?=#{dirty?} to_h=#{to_h}"
198
+ # debug_model __method__, __LINE__, "@cache__stored=#{@cache__stored} dirty?=#{dirty?} to_h=#{to_h}"
198
199
  if stored?
199
200
  # debug_model __method__, __LINE__,"dirty: #{self.class.name}::#{self.id}"
200
201
  __save__
201
202
  else
202
- debug_model __method__, __LINE__, "<< to repo: #{self.class.name}::#{self.to_h}"
203
+ # debug_model __method__, __LINE__, "<< to repo: #{self.class.name}::#{self.to_h}"
203
204
  @cache__stored = true
204
205
  @cache__collection.repo_collection << self
205
206
  # TODO: big problem! once new model saved it should become buffer in cache!
@@ -339,23 +340,24 @@ module Volt
339
340
  # MESSAGE_BUS is on and there's another connection
340
341
  # (e.g. console) running.
341
342
  # Returns a promise with destroyed model proxy as value.
343
+ # TODO: destroy any has_many association
342
344
  def model.__destroy__
343
345
  # debug_model __method__, __LINE__
344
346
  fail_if_read_only(__method__)
345
- # debug_model __method__, __LINE__
347
+ debug_model __method__, __LINE__
346
348
  promise = if stored?
347
349
  destroy(caller: self)
348
350
  else
349
351
  Promise.value(self)
350
352
  end
351
- # debug_model __method__, __LINE__
352
- promise.then do |m|
353
- # debug_model __method__, __LINE__, "destroy promise resolved to #{m}"
353
+ debug_model __method__, __LINE__
354
+ promise.then do |result|
355
+ debug_model __method__, __LINE__, "destroy promise result => #{result}"
354
356
  @cache__collection.destroyed(self)
355
357
  uncache
356
358
  self
357
359
  end.fail do |errors|
358
- # debug_model __method__, __LINE__, "destroy failed => #{errors}"
360
+ debug_model __method__, __LINE__, "destroy failed => #{errors}"
359
361
  errors
360
362
  end
361
363
  end
@@ -666,6 +668,7 @@ module Volt
666
668
  # debug_model __method__, __LINE__
667
669
  end
668
670
  end
671
+ @cache__collection.flush!
669
672
  end
670
673
  end
671
674
  model.singleton_class.send(:private, :mark_associations_for_destruction)
@@ -1,5 +1,5 @@
1
1
  module Volt
2
2
  module RepoCache
3
- VERSION = "0.1.7"
3
+ VERSION = "0.1.8"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: volt-repo_cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin Gunn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-28 00:00:00.000000000 Z
11
+ date: 2016-05-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Cache multiple collections or query based subsets from any Volt repository.
14
14
  Provides faster and simpler client-side processing. Reduces the burden of promise