(function(global){global.wrappers['/home/dev/Dropbox/www/browser-database/src/class/storage.ts']=[function(require,module,exports,__dirname,__filename){ "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const uuid = require("uuid");
/*
* Storage implementation
*/
class Storage {
/*
* Constructor
*
* @param options Options for storage
*/
constructor(options = {}) {
/*
* Local data holder
*/
this.data = {};
this.storageKey = options.storageKey || 'browser-database';
this.load();
}
/*
* Get list of records
*
* @param modelName Name of model
*/
getAll(modelName) {
this.ensureModel(modelName);
const ret = Object.keys(this.data[modelName]).map((id) => Object.assign({ id }, this.data[modelName][id]));
return Promise.resolve(ret);
}
/*
* Get single record by id
*
* @param modelName Name of model
* @param id ID of primary key
*/
getById(modelName, id) {
this.ensureModel(modelName);
const row = this.data[modelName][id];
if (row === undefined) {
return Promise.reject(new Error('Item Not Found'));
}
const ret = Object.assign({ id }, this.data[modelName][id]);
return Promise.resolve(ret);
}
/*
* Insert new record
*
* @param modelName Name of model
* @param row Row data
*/
insert(modelName, row) {
this.ensureModel(modelName);
const id = row.id || uuid.v4();
delete row.id;
this.data[modelName][id] = row;
return this.save()
.then(() => this.getById(modelName, id));
}
/*
* Update existing record
*
* @param modelName Name of model
* @param id ID of primary key
* @param row Row data
*/
update(modelName, id, row) {
this.ensureModel(modelName);
const theRow = this.data[modelName][id];
if (theRow === undefined) {
return Promise.reject(new Error('Item Not Found'));
}
Object.assign(theRow, row);
return this.save()
.then(() => this.getById(modelName, id));
}
/*
* Remove existing record
*
* @param modelName Name of model
* @param id ID of primary key
*/
remove(modelName, id) {
this.ensureModel(modelName);
const theRow = this.data[modelName][id];
if (theRow === undefined) {
return Promise.reject(new Error('Item Not Found'));
}
delete this.data[modelName][id];
return this.save()
.then(() => Promise.resolve(theRow));
}
/*
* Saves data to storage
*/
save() {
return Promise.resolve(this.data);
}
/*
* Loads data from storage
*/
load() {
return Promise.resolve(this.data);
}
/*
* Checks if model exists and creates it if not
*
* @param modelName Name of model
*/
ensureModel(modelName) {
if (this.data[modelName] === undefined) {
this.data[modelName] = {};
}
}
}
exports.Storage = Storage;
},'src/class/storage.ts',{"uuid":"/home/dev/Dropbox/www/browser-database/node_modules/uuid/index.js","../interface":"/home/dev/Dropbox/www/browser-database/src/interface/index.ts"}];})(this);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2QkFBNkI7QUFJN0I7O0dBRUc7QUFDSDtJQVlFOzs7O09BSUc7SUFDSCxZQUFZLFVBQTJCLEVBQUU7UUFmekM7O1dBRUc7UUFDSCxTQUFJLEdBQStCLEVBQUUsQ0FBQztRQWNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksa0JBQWtCLENBQUM7UUFFM0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsU0FBaUI7UUFFdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6RyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLFNBQWlCLEVBQUUsRUFBbUI7UUFFNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUNyQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxD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OlsiaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcblxuaW1wb3J0IHtJU3RvcmFnZU9wdGlvbnMsIElTdG9yYWdlfSBmcm9tICcuLi9pbnRlcmZhY2UnO1xuXG4vKlxuICogU3RvcmFnZSBpbXBsZW1lbnRhdGlvblxuICovXG5leHBvcnQgY2xhc3MgU3RvcmFnZSBpbXBsZW1lbnRzIElTdG9yYWdlIHtcblxuICAvKlxuICAgKiBMb2NhbCBkYXRhIGhvbGRlclxuICAgKi9cbiAgZGF0YToge1ttb2RlbE5hbWU6IHN0cmluZ106IGFueX0gPSB7fTtcblxuICAvKlxuICAgKiBTdG9yYWdlIGtleSBob2xkZXJcbiAgICovXG4gIHN0b3JhZ2VLZXk6IHN0cmluZztcblxuICAvKlxuICAgKiBDb25zdHJ1Y3RvclxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBzdG9yYWdlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJU3RvcmFnZU9wdGlvbnMgPSB7fSkge1xuXG4gICAgdGhpcy5zdG9yYWdlS2V5ID0gb3B0aW9ucy5zdG9yYWdlS2V5IHx8ICdicm93c2VyLWRhdGFiYXNlJztcblxuICAgIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgLypcbiAgICogR2V0IGxpc3Qgb2YgcmVjb3Jkc1xuICAgKlxuICAgKiBAcGFyYW0gbW9kZWxOYW1lIE5hbWUgb2YgbW9kZWxcbiAgICovXG4gIGdldEFsbChtb2RlbE5hbWU6IHN0cmluZyk6IFByb21pc2U8b2JqZWN0PiB7XG5cbiAgICB0aGlzLmVuc3VyZU1vZGVsKG1vZGVsTmFtZSk7XG5cbiAgICBjb25zdCByZXQgPSBPYmplY3Qua2V5cyh0aGlzLmRhdGFbbW9kZWxOYW1lXSkubWFwKChpZCkgPT4gT2JqZWN0LmFzc2lnbih7aWR9LCB0aGlzLmRhdGFbbW9kZWxOYW1lXVtpZF0pKTtcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmV0KTtcbiAgfVxuXG4gIC8qXG4gICAqIEdldCBzaW5nbGUgcmVjb3JkIGJ5IGlkXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbE5hbWUgTmFtZSBvZiBtb2RlbFxuICAgKiBAcGFyYW0gaWQgSUQgb2YgcHJpbWFyeSBrZXlcbiAgICovXG4gIGdldEJ5SWQobW9kZWxOYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIgfCBzdHJpbmcpOiBQcm9taXNlPG9iamVjdD4ge1xuXG4gICAgdGhpcy5lbnN1cmVNb2RlbChtb2RlbE5hbWUpO1xuXG4gICAgY29uc3Qgcm93ID0gdGhpcy5kYXRhW21vZGVsTmFtZV1baWRdO1xuXG4gICAgaWYgKHJvdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdJdGVtIE5vdCBGb3VuZCcpKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXQgPSBPYmplY3QuYXNzaWduKHtpZH0sIHRoaXMuZGF0YVttb2RlbE5hbWVdW2lkXSk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJldCk7XG4gIH1cblxuICAvKlxuICAgKiBJbnNlcnQgbmV3IHJlY29yZFxuICAgKlxuICAgKiBAcGFyYW0gbW9kZWxOYW1lIE5hbWUgb2YgbW9kZWxcbiAgICogQHBhcmFtIHJvdyBSb3cgZGF0YVxuICAgKi9cbiAgaW5zZXJ0KG1vZGVsTmFtZTogc3RyaW5nLCByb3c6IG9iamVjdCk6IFByb21pc2U8b2JqZWN0PiB7XG5cbiAgICB0aGlzLmVuc3VyZU1vZGVsKG1vZGVsTmFtZSk7XG5cbiAgICBjb25zdCBpZCA9IChyb3cgYXMgYW55KS5pZCB8fCB1dWlkLnY0KCk7XG5cbiAgICBkZWxldGUgKHJvdyBhcyBhbnkpLmlkO1xuXG4gICAgdGhpcy5kYXRhW21vZGVsTmFtZV1baWRdID0gcm93O1xuXG4gICAgcmV0dXJuIHRoaXMuc2F2ZSgpXG4gICAgICAudGhlbigoKSA9PiB0aGlzLmdldEJ5SWQobW9kZWxOYW1lLCBpZCkpO1xuICB9XG5cbiAgLypcbiAgICogVXBkYXRlIGV4aXN0aW5nIHJlY29yZFxuICAgKlxuICAgKiBAcGFyYW0gbW9kZWxOYW1lIE5hbWUgb2YgbW9kZWxcbiAgICogQHBhcmFtIGlkIElEIG9mIHByaW1hcnkga2V5XG4gICAqIEBwYXJhbSByb3cgUm93IGRhdGFcbiAgICovXG4gIHVwZGF0ZShtb2RlbE5hbWU6IHN0cmluZywgaWQ6IG51bWJlciB8IHN0cmluZywgcm93OiBvYmplY3QpOiBQcm9taXNlPG9iamVjdD4ge1xuXG4gICAgdGhpcy5lbnN1cmVNb2RlbChtb2RlbE5hbWUpO1xuXG4gICAgY29uc3QgdGhlUm93ID0gdGhpcy5kYXRhW21vZGVsTmFtZV1baWRdO1xuXG4gICAgaWYgKHRoZVJvdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdJdGVtIE5vdCBGb3VuZCcpKTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKHRoZVJvdywgcm93KTtcblxuICAgIHJldHVybiB0aGlzLnNhdmUoKVxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5nZXRCeUlkKG1vZGVsTmFtZSwgaWQpKTtcbiAgfVxuXG4gIC8qXG4gICAqIFJlbW92ZSBleGlzdGluZyByZWNvcmRcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsTmFtZSBOYW1lIG9mIG1vZGVsXG4gICAqIEBwYXJhbSBpZCBJRCBvZiBwcmltYXJ5IGtleVxuICAgKi9cbiAgcmVtb3ZlKG1vZGVsTmFtZTogc3RyaW5nLCBpZDogbnVtYmVyIHwgc3RyaW5nKTogUHJvbWlzZTxvYmplY3Q+IHtcblxuICAgIHRoaXMuZW5zdXJlTW9kZWwobW9kZWxOYW1lKTtcblxuICAgIGNvbnN0IHRoZVJvdyA9IHRoaXMuZGF0YVttb2RlbE5hbWVdW2lkXTtcblxuICAgIGlmICh0aGVSb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignSXRlbSBOb3QgRm91bmQnKSk7XG4gICAgfVxuXG4gICAgZGVsZXRlIHRoaXMuZGF0YVttb2RlbE5hbWVdW2lkXTtcblxuICAgIHJldHVybiB0aGlzLnNhdmUoKVxuICAgICAgLnRoZW4oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHRoZVJvdykpO1xuICB9XG5cbiAgLypcbiAgICogU2F2ZXMgZGF0YSB0byBzdG9yYWdlXG4gICAqL1xuICBzYXZlKCk6IFByb21pc2U8b2JqZWN0PiB7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZGF0YSk7XG4gIH1cblxuICAvKlxuICAgKiBMb2FkcyBkYXRhIGZyb20gc3RvcmFnZVxuICAgKi9cbiAgbG9hZCgpOiBQcm9taXNlPG9iamVjdD4ge1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmRhdGEpO1xuICB9XG5cbiAgLypcbiAgICogQ2hlY2tzIGlmIG1vZGVsIGV4aXN0cyBhbmQgY3JlYXRlcyBpdCBpZiBub3RcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsTmFtZSBOYW1lIG9mIG1vZGVsXG4gICAqL1xuICBwcml2YXRlIGVuc3VyZU1vZGVsKG1vZGVsTmFtZTogc3RyaW5nKTogdm9pZCB7XG5cbiAgICBpZiAodGhpcy5kYXRhW21vZGVsTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kYXRhW21vZGVsTmFtZV0gPSB7fTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|