chrobject
Version:
Stores chronicles of plain objects as diffs and snapshots
63 lines (62 loc) • 2.33 kB
JavaScript
/**
* Creator: Christian Hotz
* Company: hydra newmedia GmbH
* Date: 11.06.16
*
* Copyright hydra newmedia GmbH
*/
;
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;