UNPKG

chrobject

Version:

Stores chronicles of plain objects as diffs and snapshots

63 lines (62 loc) 2.33 kB
/** * Creator: Christian Hotz * Company: hydra newmedia GmbH * Date: 11.06.16 * * Copyright hydra newmedia GmbH */ "use strict"; var Configuration_1 = require('../utils/Configuration'); var EntryAppService_1 = require('../appservices/EntryAppService'); var Chrobject = (function () { function Chrobject(entity, config, storage, options) { this.entity = entity; this.config = config; this.appService = new EntryAppService_1.EntryAppService(entity, storage, options ? options : {}); } Chrobject.prototype.getDiffs = function (condition, callback) { this.appService.getDiffs(condition, callback); }; Chrobject.prototype.getSnapshotById = function (id, callback) { this.appService.getSnapshotById(id, callback); }; Chrobject.prototype.saveEntry = function (obj, creator, timestamp, callback) { if (!timestamp) { timestamp = new Date(); } switch (this.config) { case Configuration_1.Configuration.SNAP_AND_DIFF: this.appService.saveSnapshotAndDiff(obj, creator, timestamp, function (err, result) { if (err && callback) { callback(err); } else if (callback) { callback(null, result ? result : {}); } }); break; case Configuration_1.Configuration.SNAP_ONLY: this.appService.saveSnapshot(obj, creator, timestamp, function (err, snapshot) { if (err && callback) { callback(err); } else if (callback) { callback(null, { snapshot: snapshot }); } }); break; case Configuration_1.Configuration.DIFF_ONLY: this.appService.saveDiff(obj, creator, timestamp, function (err, diff) { if (err && callback) { callback(err); } else if (callback) { callback(null, { diff: diff }); } }); break; } }; return Chrobject; }()); exports.Chrobject = Chrobject;