UNPKG

trivialmodels

Version:

A trivial javascript model system, designed to be easy to build backends for.

3 lines (2 loc) 8.95 kB
'use strict';var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value" in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();Object.defineProperty(exports,"__esModule",{value:true});var _lodash=require('lodash');var _lodash2=_interopRequireDefault(_lodash);var _bluebird=require('bluebird');var _bluebird2=_interopRequireDefault(_bluebird);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var SimpleDriver=function(){function SimpleDriver(){_classCallCheck(this,SimpleDriver);this.db={};}_createClass(SimpleDriver,[{key:'_genID',value:function _genID(){return ''+Date.now();}},{key:'init',value:function init(){}},{key:'get',value:function get(pk){return _bluebird2.default.resolve(this.db[pk]);}},{key:'getAll',value:function getAll(){return _bluebird2.default.resolve(_lodash2.default.values(this.db));}},{key:'set',value:function set(pk,value){if(arguments.length==1){value=pk;pk=this._genID();}if(arguments.length==2){value=pk;pk=this._genID();}pk=pk||this._genID();this.db[pk]=value;return _bluebird2.default.resolve(pk);}},{key:'filter',value:function filter(predicate){return _bluebird2.default.resolve((0,_lodash2.default)(this.db).values().filter(predicate).run());}},{key:'query',value:function query(queryFunc){return _bluebird2.default.resolve(queryFunc((0,_lodash2.default)(this.db)));}},{key:'remove',value:function remove(predicate){var _this=this;return _bluebird2.default.resolve((0,_lodash2.default)(this.db).keys().reduce(function(results,pk){var item=_this.db[pk];if(!_lodash2.default.isEmpty(_lodash2.default.filter([item],predicate))){results.push(pk);}return results;},[])).then(function(toRemove){_lodash2.default.each(toRemove,function(pk){delete _this.db[pk];});});}},{key:'removeAll',value:function removeAll(){this.db={};return _bluebird2.default.resolve();}}]);return SimpleDriver;}();exports.default=SimpleDriver; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kcml2ZXJzL3NpbXBsZURyaXZlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiMjhCQVdNLFlBQVksWUFDZCxTQURFLFlBQVksRUFFZCxzQkFGRSxZQUFZLEVBR1YsSUFBSSxDQUFDLEVBQUUsQ0FBRyxFQUFFLENBQUMsQ0FDaEIsYUFKQyxZQUFZLHVDQU9kLENBQ0ksT0FBTyxFQUFFLENBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQzFCLG1DQU1LLEVBQUUsZ0NBRUosRUFBRSxDQUNOLENBQ0ksT0FBTyxtQkFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3ZDLHVDQUdELENBQ0ksT0FBTyxtQkFBUSxPQUFPLENBQUMsaUJBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzdDLGdDQUVHLEVBQUUsQ0FBRSxLQUFLLENBQ2IsQ0FDSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUksQ0FBQyxDQUN4QixDQUNJLEtBQUssQ0FBRyxFQUFFLENBQUMsQUFDWCxFQUFFLENBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ3RCLEFBRUQsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFJLENBQUMsQ0FDeEIsQ0FFSSxLQUFLLENBQUcsRUFBRSxDQUFDLEFBQ1gsRUFBRSxDQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUN0QixBQUVELEVBQUUsQ0FBRyxFQUFFLEVBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEFBRXpCLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUcsS0FBSyxDQUFDLEFBQ3BCLE9BQU8sbUJBQVEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQzlCLHNDQUVNLFNBQVMsQ0FDaEIsQ0FDSSxPQUFPLG1CQUFRLE9BQU8sQ0FBQyxxQkFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FDdkUsb0NBRUssU0FBUyxDQUNmLENBQ0ksT0FBTyxtQkFBUSxPQUFPLENBQUMsU0FBUyxDQUFDLHFCQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDakQsc0NBRU0sU0FBUyxDQUNoQixnQkFDSSxPQUFPLG1CQUFRLE9BQU8sQ0FBQyxxQkFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQUMsT0FBTyxDQUFFLEVBQUUsQ0FDeEQsQ0FDSSxJQUFJLElBQUksQ0FBRyxNQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxBQUt2QixHQUFHLENBQUMsaUJBQUUsT0FBTyxDQUFDLGlCQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFFLFNBQVMsQ0FBQyxDQUFDLENBQzFDLENBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNwQixBQUVELE9BQU8sT0FBTyxDQUFDLENBQ2xCLENBQUUsRUFBRSxDQUFDLENBQUMsQ0FDTixJQUFJLENBQUMsU0FBQyxRQUFRLENBQ2YsQ0FDSSxpQkFBRSxJQUFJLENBQUMsUUFBUSxDQUFFLFNBQUMsRUFBRSxDQUNwQixDQUNJLE9BQU8sTUFBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDdEIsQ0FBQyxDQUFDLENBQ04sQ0FBQyxDQUFDLENBQ1YsNkNBR0QsQ0FDSSxJQUFJLENBQUMsRUFBRSxDQUFHLEVBQUUsQ0FBQyxBQUNiLE9BQU8sbUJBQVEsT0FBTyxFQUFFLENBQUMsQ0FDNUIsV0F2RkMsWUFBWSxxQkE0RkgsWUFBWSIsImZpbGUiOiJzaW1wbGVEcml2ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBTaW1wbGVEcml2ZXIgLSBBIHNpbXBsZSwgaW4tbWVtb3J5IGRyaXZlciBmb3IgVHJpdmlhbE1vZGVsc1xuLy8vXG4vLy8gQG1vZHVsZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUHJvbWlzZSBmcm9tICdibHVlYmlyZCc7XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jbGFzcyBTaW1wbGVEcml2ZXIge1xuICAgIGNvbnN0cnVjdG9yKClcbiAgICB7XG4gICAgICAgIHRoaXMuZGIgPSB7fTtcbiAgICB9IC8vIGVuZCBjb25zdHJ1Y3RvclxuXG4gICAgX2dlbklEKClcbiAgICB7XG4gICAgICAgIHJldHVybiAnJyArIERhdGUubm93KCk7XG4gICAgfSAvLyBlbmQgX2dlbklEXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIERyaXZlciBBUElcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgaW5pdCgpe31cblxuICAgIGdldChwayAvKiwgaW5zdCovKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmRiW3BrXSk7XG4gICAgfSAvLyBlbmQgZ2V0XG5cbiAgICBnZXRBbGwoLyppbnN0Ki8pXG4gICAge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKF8udmFsdWVzKHRoaXMuZGIpKTtcbiAgICB9IC8vIGVuZCBnZXRBbGxcblxuICAgIHNldChwaywgdmFsdWUvKiwgaW5zdCovKVxuICAgIHtcbiAgICAgICAgaWYoYXJndW1lbnRzLmxlbmd0aCA9PSAxKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZSA9IHBrO1xuICAgICAgICAgICAgcGsgPSB0aGlzLl9nZW5JRCgpO1xuICAgICAgICB9IC8vIGVuZCBpZlxuXG4gICAgICAgIGlmKGFyZ3VtZW50cy5sZW5ndGggPT0gMilcbiAgICAgICAge1xuICAgICAgICAgICAgLy9pbnN0ID0gdmFsdWU7XG4gICAgICAgICAgICB2YWx1ZSA9IHBrO1xuICAgICAgICAgICAgcGsgPSB0aGlzLl9nZW5JRCgpO1xuICAgICAgICB9IC8vIGVuZCBpZlxuXG4gICAgICAgIHBrID0gcGsgfHwgdGhpcy5fZ2VuSUQoKTtcblxuICAgICAgICB0aGlzLmRiW3BrXSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBrKTtcbiAgICB9IC8vIGVuZCBzZXRcblxuICAgIGZpbHRlcihwcmVkaWNhdGUgLyosIGluc3QqLylcbiAgICB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXyh0aGlzLmRiKS52YWx1ZXMoKS5maWx0ZXIocHJlZGljYXRlKS5ydW4oKSk7XG4gICAgfSAvLyBlbmQgZmlsdGVyXG5cbiAgICBxdWVyeShxdWVyeUZ1bmMgLyosIGluc3QqLylcbiAgICB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocXVlcnlGdW5jKF8odGhpcy5kYikpKTtcbiAgICB9IC8vIGVuZCBxdWVyeUZ1blxuXG4gICAgcmVtb3ZlKHByZWRpY2F0ZSAvKiwgaW5zdCovKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShfKHRoaXMuZGIpLmtleXMoKS5yZWR1Y2UoKHJlc3VsdHMsIHBrKSA9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5kYltwa107XG5cbiAgICAgICAgICAgICAgICAvLyBTaW1wbGVzdCB3YXkgdG8gZ2V0IGxvZGFzaCBmaWx0ZXIgY29tcGF0aWJsZSBwcmVkaWNhdGVzIGlzIHRvIGF0dGVtcHQgdG8gZmlsdGVyIGEgbGlzdCB3aXRoIHRoZVxuICAgICAgICAgICAgICAgIC8vIHNpbmdsZSBpdGVtLCBhbmQgaWYgdGhhdCBpcyBub3QgZW1wdHksIHdlIGtub3cgaXQgZmFpbGVkIHRoZSBmaWx0ZXIsIHNvIGl0IHNob3VsZCBiZSBpbiB0aGUgZmluYWxcbiAgICAgICAgICAgICAgICAvLyBvdXRwdXQuXG4gICAgICAgICAgICAgICAgaWYoIV8uaXNFbXB0eShfLmZpbHRlcihbaXRlbV0sIHByZWRpY2F0ZSkpKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHBrKTtcbiAgICAgICAgICAgICAgICB9IC8vIGVuZCBpZlxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgICAgICB9LCBbXSkpXG4gICAgICAgICAgICAudGhlbigodG9SZW1vdmUpID0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXy5lYWNoKHRvUmVtb3ZlLCAocGspID0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5kYltwa107XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9IC8vIGVuZCByZW1vdmVcblxuICAgIHJlbW92ZUFsbCgvKmluc3QqLylcbiAgICB7XG4gICAgICAgIHRoaXMuZGIgPSB7fTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0gLy8gZW5kIHJlbW92ZUFsbFxufSAvLyBlbmQgU2ltcGxlRHJpdmVyXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgZGVmYXVsdCBTaW1wbGVEcml2ZXI7XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIl19