diff --git a/example/persistence/bundle.json b/example/persistence/bundle.json new file mode 100644 index 0000000000..ae746fc27f --- /dev/null +++ b/example/persistence/bundle.json @@ -0,0 +1,18 @@ +{ + "extensions": { + "components": [ + { + "provides": "persistenceService", + "type": "provider", + "implementation": "BrowserPersistenceProvider.js", + "depends": [ "$q", "PERSISTENCE_SPACE" ] + } + ], + "constants": [ + { + "key": "PERSISTENCE_SPACE", + "value": "mct" + } + ] + } +} \ No newline at end of file diff --git a/example/persistence/src/BrowserPersistenceProvider.js b/example/persistence/src/BrowserPersistenceProvider.js new file mode 100644 index 0000000000..aa147dd453 --- /dev/null +++ b/example/persistence/src/BrowserPersistenceProvider.js @@ -0,0 +1,82 @@ +/*global define*/ + +/** + * Stubbed implementation of a persistence provider, + * to permit objects to be created, saved, etc. + */ +define( + [], + function () { + 'use strict'; + + + + function BrowserPersistenceProvider($q, SPACE) { + var spaces = SPACE ? [SPACE] : [], + caches = {}, + promises = { + as: function (value) { + return $q.when(value); + } + }; + + spaces.forEach(function (space) { + caches[space] = {}; + }); + + return { + listSpaces: function () { + return promises.as(spaces); + }, + listObjects: function (space) { + var cache = caches[space]; + return promises.as( + cache ? Object.keys(cache) : null + ); + }, + createObject: function (space, key, value) { + var cache = caches[space]; + + if (!cache || cache[key]) { + return promises.as(null); + } + + cache[key] = value; + + return promises.as(true); + }, + readObject: function (space, key) { + var cache = caches[space]; + return promises.as( + cache ? cache[key] : null + ); + }, + updateObject: function (space, key, value) { + var cache = caches[space]; + + if (!cache || !cache[key]) { + return promises.as(null); + } + + cache[key] = value; + + return promises.as(true); + }, + deleteObject: function (space, key, value) { + var cache = caches[space]; + + if (!cache || !cache[key]) { + return promises.as(null); + } + + delete cache[key]; + + return promises.as(true); + } + }; + + } + + return BrowserPersistenceProvider; + } +); \ No newline at end of file