class Pettanr.Cache constructor: (options) -> @data = {} _.extend(this, Backbone.Events) # return cached items store: (items) -> if _.isArray(items) return_items = _.map items, (item) => r = @restore(item.cache_key()) r = @store(item) if !r r else item = items cached_item = @restore(item.cache_key()) return_items = if cached_item cached_item # merge? else @data[item.cache_key()] = item @refresh(return_items) return_items restore: (key) -> k = if _.isString(key) key else key.cache_key() item = @data[k] if item @refresh(item) refresh: (item) -> if item.expire_time if Date.now() >= return_items.expire_time @sync(item) item sync: (item) -> item.fetch().done => item.expire_time.setTime(Date.now() + 10 * 60 * 1000)