3 constructor: (options) ->
\r
6 _.extend(this, Backbone.Events)
\r
8 # return cached items
\r
11 return_items = _.map items, (item) =>
\r
12 r = @restore(item.cache_key())
\r
13 r = @store(item) if !r
\r
17 cached_item = @restore(item.cache_key())
\r
18 return_items = if cached_item
\r
19 cached_item # merge?
\r
21 @data[item.cache_key()] = item
\r
22 @refresh(return_items)
\r
26 k = if _.isString(key)
\r
35 if @holds[item.cache_key()]
\r
41 return @holds[item.cache_key()] if @holds[item.cache_key()]
\r
42 @holds[item.cache_key()] = item.clone()
\r
45 @data[item.cache_key()] = item # overwrite
\r
46 delete @holds[item.cache_key()]
\r
50 if Date.now() >= return_items.expire_time
\r
55 item.fetch().done =>
\r
56 item.expire_time.setTime(Date.now() + 10 * 60 * 1000)
\r
58 class Pettanr.Cache.Retriever
\r
60 constructor: (@model, @id) ->
\r
61 _.extend(this, Backbone.Events)
\r
63 retrieve: (force) ->
\r
64 empty_item = new @model({id: @id})
\r
67 empty_item.fetch().done =>
\r
68 @trigger('retrieve', empty_item)
\r
71 item = Pettanr.cache.restore(empty_item)
\r
73 @trigger('retrieve', item)
\r
75 empty_item.fetch().done =>
\r
76 Pettanr.cache.store(empty_item)
\r
77 @trigger('retrieve', empty_item)
\r
80 @trigger('retrieve', empty_item)
\r
82 edit: (model, id) ->
\r
83 empty_item = new @model({id: @id})
\r
84 item = Pettanr.cache.hold(empty_item)
\r
85 item.fetch().done =>
\r
86 @item.attributes = @item.replaced_attributes()
\r
87 @trigger('retrieve', item)
\r