@amplience/dc-cli
Version:
Dynamic Content CLI Tool
106 lines (105 loc) • 3.84 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventCloneStep = void 0;
const clone_hub_step_1 = require("../model/clone-hub-step");
const path_1 = require("path");
const export_1 = require("../../event/export");
const import_1 = require("../../event/import");
const fs_1 = require("fs");
const dynamic_content_client_factory_1 = __importDefault(require("../../../services/dynamic-content-client-factory"));
class EventCloneStep {
constructor() {
this.isLimited = true;
}
getId() {
return clone_hub_step_1.CloneHubStepId.Event;
}
getName() {
return 'Clone Events';
}
async run(state) {
try {
state.logFile.appendLine(`Exporting existing events from destination.`);
await (0, export_1.handler)({
dir: (0, path_1.join)(state.path, 'oldEvent'),
force: true,
snapshots: false,
logFile: state.logFile,
...state.to
});
}
catch (e) {
state.logFile.appendLine(`ERROR: Could not export existing events. \n${e}`);
return false;
}
try {
state.logFile.appendLine(`Exporting events from source.`);
await (0, export_1.handler)({
dir: (0, path_1.join)(state.path, 'event'),
force: true,
snapshots: false,
logFile: state.logFile,
...state.from
});
}
catch (e) {
state.logFile.appendLine(`ERROR: Could not export events. \n${e}`);
return false;
}
try {
await (0, import_1.handler)({
dir: (0, path_1.join)(state.path, 'event'),
logFile: state.logFile,
mapFile: state.argv.mapFile,
originalIds: false,
schedule: true,
acceptSnapshotLimits: true,
catchup: false,
...state.to
});
}
catch (e) {
state.logFile.appendLine(`ERROR: Could not import events. \n${e}`);
return false;
}
return true;
}
async revert(state) {
const client = (0, dynamic_content_client_factory_1.default)(state.to);
const toArchive = state.revertLog.getData('EVENT-CREATE', this.getName());
const toUpdate = state.revertLog.getData('EVENT-UPDATE', this.getName());
for (let i = 0; i < toArchive.length; i++) {
try {
const event = await client.events.get(toArchive[i]);
await event.related.archive();
state.logFile.addAction('ARCHIVE', toArchive[i]);
}
catch (e) {
state.logFile.appendLine(`Couldn't archive event ${toArchive[i]}. Continuing...`);
}
}
if (toUpdate.length > 0 && (0, fs_1.existsSync)((0, path_1.join)(state.path, 'oldEvent'))) {
try {
await (0, import_1.handler)({
dir: (0, path_1.join)(state.path, 'oldEvent'),
logFile: state.logFile,
mapFile: state.argv.mapFile,
originalIds: true,
schedule: true,
acceptSnapshotLimits: true,
catchup: false,
...state.to
});
}
catch (e) {
state.logFile.appendLine(`ERROR: Could not import old events. \n${e}`);
return false;
}
}
return true;
}
}
exports.EventCloneStep = EventCloneStep;