3 constructor: (options) ->
\r
4 @operators = options.operators
\r
7 _.extend(this, Backbone.Events)
\r
9 # return cached items
\r
12 return_items = _.map items, (item) =>
\r
13 r = @restore(item.cache_key())
\r
14 r = @store(item) if !r
\r
18 cached_item = @restore(item.cache_key())
\r
19 return_items = if cached_item
\r
20 cached_item # merge?
\r
22 @data[item.cache_key()] = item
\r
23 # @refresh(return_items)
\r
27 k = if _.isString(key)
\r
36 if @holds[item.cache_key()]
\r
42 return @holds[item.cache_key()] if @holds[item.cache_key()]
\r
43 @holds[item.cache_key()] = item.clone()
\r
46 delete @holds[item.cache_key()]
\r
47 @restore(item).fetch()
\r
50 delete @holds[item.cache_key()]
\r
53 delete @data[item.cache_key()]
\r
56 @restore(item.cache_key()).fetch()
\r
57 #if item.expire_time
\r
58 # if Date.now() >= return_items.expire_time
\r
64 success: (model, response, opt) =>
\r
65 item.expire_time.setTime(Date.now() + 10 * 60 * 1000)
\r
66 error: (model, response, opt) =>
\r
67 @trigger('fail', response, opt)
\r
70 class Pettanr.Cache.Retriever
\r
72 constructor: (@model, @id) ->
\r
73 _.extend(this, Backbone.Events)
\r
75 retrieve: (force) ->
\r
76 empty_item = new @model({id: @id})
\r
78 # query (ex: folders/3?watch)
\r
79 @retrieve_force(empty_item)
\r
82 item = Pettanr.cache.restore(empty_item)
\r
84 @trigger('retrieve', item)
\r
87 success: (model, response, opt) =>
\r
88 Pettanr.cache.store(empty_item)
\r
89 @trigger('retrieve', empty_item)
\r
90 error: (model, response, opt) =>
\r
91 @trigger('fail', response, opt)
\r
95 @trigger('retrieve', empty_item)
\r
97 retrieve_force: (item) ->
\r
99 success: (model, response, opt) =>
\r
100 @trigger('retrieve', item)
\r
101 error: (model, response, opt) =>
\r
102 @trigger('fail', response, opt)
\r
105 edit: (options = {}) ->
\r
106 empty_item = new @model({id: @id})
\r
107 item = empty_item.hold()
\r
109 success: (model, response, opt) =>
\r
110 @trigger('retrieve', item)
\r
111 error: (model, response, opt) =>
\r
112 @trigger('fail', response, opt)
\r