@avonjs/avonjs
Version:
A fluent Node.js API generator.
75 lines (74 loc) • 3.01 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const collect_js_1 = __importDefault(require("collect.js"));
const debug_1 = __importDefault(require("../support/debug"));
exports.default = (Parent) => {
class DumpResourceActions extends Parent {
/**
* Indicates activating dump events for the resource.
*/
dumpActions = true;
/**
* Create an action event for the resource creation.
*/
dumpCreationAction(requestID, payload = {}, userId) {
this.dump(requestID, 'Create', userId, payload);
}
/**
* Create an action event for the resource updates.
*/
dumpUpdateAction(requestID, previous, payload = {}, userId) {
const changes = (0, collect_js_1.default)(this.resource.getAttributes())
.diffAssoc((0, collect_js_1.default)(previous.getAttributes()))
.all();
this.dump(requestID, 'Create', userId, payload, changes);
}
/**
* Create an action event for the resource delete.
*/
dumpDeletionAction(requestID, userId) {
this.dump(requestID, 'Delete', userId);
}
/**
* Create an action event for the resource delete.
*/
dumpRestoreAction(requestID, userId) {
this.dump(requestID, 'Restore', userId);
}
/**
* Create an action event for the resource delete.
*/
dumpStandaloneActionAction(requestID, action, payload = {}, userId) {
this.dump(requestID, action.name(), userId, payload);
}
/**
* Create an action event for the resource delete.
*/
dumpBulkActionAction(requestID, action, changes = [], payload = {}, userId) {
changes.forEach(({ resource, previous }) => {
const changes = (0, collect_js_1.default)(resource.getAttributes())
.diffAssoc((0, collect_js_1.default)(previous.getAttributes()))
.all();
this.dump(requestID, action.name(), userId, payload, changes);
});
}
/**
* Get the default attributes for creating a new action event.
*/
dump(requestID, action, userId, payload, changes) {
if (this.debugIsEnabled()) {
debug_1.default.dump(`RequestID: "${requestID}"`, `Resource: "${this.resourceName()}"`, `Action: "${action}"`, `User: "${userId || 'N/A'}"`, `Payload: ${JSON.stringify(payload ?? [])}`, `Changes: ${JSON.stringify(changes ?? [])}`);
}
}
/**
* Determine could dump the action.
*/
debugIsEnabled() {
return this.resource !== undefined && this.dumpActions;
}
}
return DumpResourceActions;
};