1 | module.exports = (providerParams) ->
|
2 | {$log} = providerParams
|
3 | Cache = require('./cache')(providerParams)
|
4 |
|
5 | class ResourceCacheEntry
|
6 | defaultValue: {}
|
7 | cacheKeyPrefix: -> @key
|
8 |
|
9 | fullCacheKey: ->
|
10 | @cacheKeyPrefix() + @cacheKeyParams
|
11 |
|
12 | constructor: (@key, params) ->
|
13 | paramKeys = if angular.isObject(params) then Object.keys(params).sort() else []
|
14 | if paramKeys.length
|
15 | @cacheKeyParams = '?' + ("#{param}=#{params[param]}" for param in paramKeys).join('&')
|
16 | else
|
17 | @cacheKeyParams = ''
|
18 |
|
19 | load: ->
|
20 | {@value, @dirty} = Cache.getItem(@fullCacheKey(), @defaultValue)
|
21 | @
|
22 |
|
23 | set: (@value, dirty) ->
|
24 | @dirty = dirty
|
25 | @_update()
|
26 |
|
27 | _update: ->
|
28 | Cache.setItem @fullCacheKey(), {@value, @dirty}
|