else\r
key.cache_key()\r
item = @data[k]\r
- if item\r
- @refresh(item)\r
+ #if item\r
+ # @refresh(item)\r
+ \r
+ retrieve: (model, id, force) ->\r
+ empty_item = new model({id: id})\r
+ if force\r
+ # query\r
+ empty_item.fetch().done =>\r
+ @trigger('retrieve', empty_item)\r
+ else if id\r
+ # existence item\r
+ item = @store(empty_item)\r
+ if item\r
+ @trigger('retrieve', item)\r
+ else\r
+ empty_item.fetch().done =>\r
+ @store(empty_item)\r
+ @trigger('retrieve', empty_item)\r
+ else\r
+ # new item\r
+ @trigger('retrieve', empty_item)\r
+ \r
+ edit: (model, id) ->\r
+ @listenTo(this, 'retrieve', @edit_retrieve)\r
+ @retrieve(model, id)\r
+ \r
+ edit_retrieve: (item) ->\r
+ editting_item = item.clone()\r
+ # get latest item\r
+ editting_item.fetch().done =>\r
+ @trigger('edit', editting_item)\r
\r
refresh: (item) ->\r
if item.expire_time\r
item.fetch().done =>\r
item.expire_time.setTime(Date.now() + 10 * 60 * 1000)\r
\r
+class Pettanr.Cache.Retriever\r
+ \r
+ constructor: (@model, @id) ->\r
+ _.extend(this, Backbone.Events)\r
+ \r
+ retrieve: (force) ->\r
+ empty_item = new @model({id: @id})\r
+ if force\r
+ # query\r
+ empty_item.fetch().done =>\r
+ @trigger('retrieve', empty_item)\r
+ else if @id\r
+ # existence item\r
+ item = Pettanr.cache.restore(empty_item)\r
+ if item\r
+ @trigger('retrieve', item)\r
+ else\r
+ empty_item.fetch().done =>\r
+ Pettanr.cache.store(empty_item)\r
+ @trigger('retrieve', empty_item)\r
+ else\r
+ # new item\r
+ @trigger('retrieve', empty_item)\r
+ \r