class Pettanr.Cache\r
\r
constructor: (options) ->\r
+ @operators = options.operators\r
@data = {}\r
@holds = {}\r
_.extend(this, Backbone.Events)\r
cached_item # merge?\r
else\r
@data[item.cache_key()] = item\r
- @refresh(return_items)\r
+ # @refresh(return_items)\r
return_items\r
\r
restore: (key) ->\r
return @holds[item.cache_key()] if @holds[item.cache_key()]\r
@holds[item.cache_key()] = item.clone()\r
\r
+ fix: (item) ->\r
+ delete @holds[item.cache_key()]\r
+ @restore(item).fetch()\r
+ \r
release: (item) ->\r
- @data[item.cache_key()] = item # overwrite\r
delete @holds[item.cache_key()]\r
\r
refresh: (item) ->\r
- if item.expire_time\r
- if Date.now() >= return_items.expire_time\r
- @sync(item)\r
- item\r
+ @restore(item.cache_key()).fetch()\r
+ #if item.expire_time\r
+ # if Date.now() >= return_items.expire_time\r
+ # @sync(item)\r
+ #item\r
\r
sync: (item) ->\r
item.fetch().done =>\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
+ # query (ex: folders/3?watch)\r
+ @retrieve_force(empty_item)\r
else if @id\r
# existence item\r
item = Pettanr.cache.restore(empty_item)\r
# new item\r
@trigger('retrieve', empty_item)\r
\r
- edit: (model, id) ->\r
+ retrieve_force: (item) ->\r
+ item.fetch().done =>\r
+ @trigger('retrieve', item)\r
+ \r
+ edit: (options = {}) ->\r
empty_item = new @model({id: @id})\r
- item = Pettanr.cache.hold(empty_item)\r
+ item = empty_item.hold()\r
+ if options.with_elements\r
+ item = item.with_elements()\r
item.fetch().done =>\r
- @item.attributes = @item.replaced_attributes()\r
+ if options.with_elements\r
+ item.attributes = item.replaced_attributes({hold: true})\r
@trigger('retrieve', item)\r
- \r
+ \r