UNPKG

trivialmodels

Version:

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

3 lines (2 loc) 8.59 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);var _trivialdb=require('trivialdb');var _trivialdb2=_interopRequireDefault(_trivialdb);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 TrivialDBDriver=function(){function TrivialDBDriver(options){_classCallCheck(this,TrivialDBDriver);this.options=options||{};}_createClass(TrivialDBDriver,[{key:'init',value:function init(model){this.options.pk=model.pk;if(this.options.namespace){var nsName=this.options.namespace.name;var nsOpts=_lodash2.default.omit(this.options.namespace,'name');if(_lodash2.default.isString(this.options.namespace)){nsName=this.options.namespace;nsOpts=undefined;}var namespace=_trivialdb2.default.ns(nsName,nsOpts);this.db=namespace.db(this.options.name,_lodash2.default.omit(this.options,['namespace','name']));}else {this.db=_trivialdb2.default.db(this.options.name,_lodash2.default.omit(this.options,['name']));}}},{key:'get',value:function get(pk){return this.db.load(pk).catch(_trivialdb2.default.errors.DocumentNotFound,function(){return undefined;});}},{key:'getAll',value:function getAll(){return _bluebird2.default.resolve(this.db.filter({}));}},{key:'set',value:function set(pk,value){return this.db.save(pk,value);}},{key:'filter',value:function filter(predicate){return _bluebird2.default.resolve(this.db.filter(predicate));}},{key:'query',value:function query(queryFunc){return _bluebird2.default.resolve(queryFunc(this.db.query()));}},{key:'remove',value:function remove(predicate){return this.db.remove(predicate);}},{key:'removeAll',value:function removeAll(){this.db.values={};return this.db.sync();}}]);return TrivialDBDriver;}();exports.default=TrivialDBDriver; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kcml2ZXJzL3RyaXZpYWxkYkRyaXZlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoia2lDQVlNLGVBQWUsWUFDakIsU0FERSxlQUFlLENBQ0wsT0FBTyxDQUNuQixzQkFGRSxlQUFlLEVBR2IsSUFBSSxDQUFDLE9BQU8sQ0FBRyxPQUFPLEVBQUksRUFBRSxDQUFDLENBQ2hDLGFBSkMsZUFBZSxrQ0FVWixLQUFLLENBQ1YsQ0FDSSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEFBRTNCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQ3pCLENBQ0ksSUFBSSxNQUFNLENBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEFBQ3pDLElBQUksTUFBTSxDQUFHLGlCQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBRSxNQUFNLENBQUMsQ0FBQyxBQUVwRCxHQUFHLGlCQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUNyQyxDQUNJLE1BQU0sQ0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxBQUNoQyxNQUFNLENBQUcsU0FBUyxDQUFDLENBQ3RCLEFBRUQsSUFBSSxTQUFTLENBQUcsb0JBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBRSxNQUFNLENBQUMsQ0FBQyxBQUM3QyxJQUFJLENBQUMsRUFBRSxDQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUUsaUJBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUUsQ0FBQyxXQUFXLENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzFGLEtBRUQsQ0FDSSxJQUFJLENBQUMsRUFBRSxDQUFHLG9CQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBRSxpQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM3RSxDQUNKLGdDQUVHLEVBQUUsQ0FDTixDQUNJLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ2xCLEtBQUssQ0FBQyxvQkFBVSxNQUFNLENBQUMsZ0JBQWdCLENBQUUsa0JBQU0sU0FBUyxFQUFBLENBQUMsQ0FBQyxDQUNsRSx1Q0FHRCxDQUNJLE9BQU8sbUJBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDOUMsZ0NBRUcsRUFBRSxDQUFFLEtBQUssQ0FDYixDQUNJLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFFLEtBQUssQ0FBQyxDQUFDLENBQ2xDLHNDQUVNLFNBQVMsQ0FDaEIsQ0FDSSxPQUFPLG1CQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQ3JELG9DQUVLLFNBQVMsQ0FDZixDQUNJLE9BQU8sbUJBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN0RCxzQ0FFTSxTQUFTLENBQ2hCLENBQ0ksT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUNwQyw2Q0FHRCxDQUNJLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFHLEVBQUUsQ0FBQyxBQUNwQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDekIsV0FyRUMsZUFBZSxxQkEwRU4sZUFBZSIsImZpbGUiOiJ0cml2aWFsZGJEcml2ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBUcml2aWFsREJEcml2ZXIgLSBBIHNpbXBsZSwgaW4tbWVtb3J5IGRyaXZlciBmb3IgVHJpdmlhbE1vZGVsc1xuLy8vXG4vLy8gQG1vZHVsZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUHJvbWlzZSBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgdHJpdmlhbGRiIGZyb20gJ3RyaXZpYWxkYic7XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jbGFzcyBUcml2aWFsREJEcml2ZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpXG4gICAge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIH0gLy8gZW5kIGNvbnN0cnVjdG9yXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIERyaXZlciBBUElcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgaW5pdChtb2RlbClcbiAgICB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5wayA9IG1vZGVsLnBrO1xuXG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy5uYW1lc3BhY2UpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhciBuc05hbWUgPSB0aGlzLm9wdGlvbnMubmFtZXNwYWNlLm5hbWU7XG4gICAgICAgICAgICB2YXIgbnNPcHRzID0gXy5vbWl0KHRoaXMub3B0aW9ucy5uYW1lc3BhY2UsICduYW1lJyk7XG5cbiAgICAgICAgICAgIGlmKF8uaXNTdHJpbmcodGhpcy5vcHRpb25zLm5hbWVzcGFjZSkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbnNOYW1lID0gdGhpcy5vcHRpb25zLm5hbWVzcGFjZTtcbiAgICAgICAgICAgICAgICBuc09wdHMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IC8vIGVuZCBpZlxuXG4gICAgICAgICAgICB2YXIgbmFtZXNwYWNlID0gdHJpdmlhbGRiLm5zKG5zTmFtZSwgbnNPcHRzKTtcbiAgICAgICAgICAgIHRoaXMuZGIgPSBuYW1lc3BhY2UuZGIodGhpcy5vcHRpb25zLm5hbWUsIF8ub21pdCh0aGlzLm9wdGlvbnMsIFsnbmFtZXNwYWNlJywgJ25hbWUnXSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5kYiA9IHRyaXZpYWxkYi5kYih0aGlzLm9wdGlvbnMubmFtZSwgXy5vbWl0KHRoaXMub3B0aW9ucywgWyduYW1lJ10pKTtcbiAgICAgICAgfSAvLyBlbmQgaWZcbiAgICB9IC8vIGVuZCBpbml0XG5cbiAgICBnZXQocGspXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5kYi5sb2FkKHBrKVxuICAgICAgICAgICAgLmNhdGNoKHRyaXZpYWxkYi5lcnJvcnMuRG9jdW1lbnROb3RGb3VuZCwgKCkgPT4gdW5kZWZpbmVkKTtcbiAgICB9IC8vIGVuZCBnZXRcblxuICAgIGdldEFsbCgpXG4gICAge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZGIuZmlsdGVyKHt9KSk7XG4gICAgfSAvLyBlbmQgZ2V0QWxsXG5cbiAgICBzZXQocGssIHZhbHVlKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGIuc2F2ZShwaywgdmFsdWUpO1xuICAgIH0gLy8gZW5kIHNldFxuXG4gICAgZmlsdGVyKHByZWRpY2F0ZSlcbiAgICB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5kYi5maWx0ZXIocHJlZGljYXRlKSk7XG4gICAgfSAvLyBlbmQgZmlsdGVyXG5cbiAgICBxdWVyeShxdWVyeUZ1bmMpXG4gICAge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHF1ZXJ5RnVuYyh0aGlzLmRiLnF1ZXJ5KCkpKTtcbiAgICB9IC8vIGVuZCBxdWVyeUZ1blxuXG4gICAgcmVtb3ZlKHByZWRpY2F0ZSlcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLmRiLnJlbW92ZShwcmVkaWNhdGUpO1xuICAgIH0gLy8gZW5kIHJlbW92ZVxuXG4gICAgcmVtb3ZlQWxsKClcbiAgICB7XG4gICAgICAgIHRoaXMuZGIudmFsdWVzID0ge307XG4gICAgICAgIHJldHVybiB0aGlzLmRiLnN5bmMoKTtcbiAgICB9IC8vIGVuZCByZW1vdmVBbGxcbn0gLy8gZW5kIFRyaXZpYWxEQkRyaXZlclxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGRlZmF1bHQgVHJpdmlhbERCRHJpdmVyO1xuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiJdfQ==