openhim-core
Version:
The OpenHIM core application that provides logging and routing of http requests
117 lines (93 loc) • 3.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setAttemptNumber = setAttemptNumber;
exports.updateOriginalTransaction = updateOriginalTransaction;
exports.updateTask = updateTask;
exports.koaMiddleware = koaMiddleware;
var _winston = _interopRequireDefault(require("winston"));
var _transactions = require("../model/transactions");
var _tasks = require("../model/tasks");
var _config = require("../config");
var _util = require("util");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function setAttemptNumber(ctx, done) {
return _transactions.TransactionModel.findOne({
_id: ctx.parentID
}, (err, transaction) => {
if (err) {
return done(err);
}
if (transaction.autoRetry) {
if (transaction.autoRetryAttempt != null) {
ctx.currentAttempt = transaction.autoRetryAttempt + 1;
} else {
ctx.currentAttempt = 1;
}
}
return transaction.save((err, tx) => {
if (err) {
_winston.default.error(`Original transaction ${transaction._id} could not be updated: ${err}`);
} else {
_winston.default.debug(`Original transaction #${tx._id} Updated successfully with attempt number`);
}
return done(null);
});
});
}
function updateOriginalTransaction(ctx, done) {
return _transactions.TransactionModel.findOne({
_id: ctx.parentID
}, (err, transaction) => {
if (err) {
return done(err);
}
transaction.childIDs.push(ctx.transactionId);
transaction.wasRerun = true;
return transaction.save((err, tx) => {
if (err) {
_winston.default.error(`Original transaction ${transaction._id} could not be updated: ${err}`);
} else {
_winston.default.debug(`Original transaction ${tx._id} - Updated successfully with childID`);
}
return done(null, transaction);
});
});
}
function updateTask(ctx, done) {
return _tasks.TaskModel.findOne({
_id: ctx.taskID
}, (err, task) => {
if (err) {
return done(err);
}
task.transactions.forEach(tx => {
if (tx.tid === ctx.parentID) {
tx.rerunID = ctx.transactionId;
tx.rerunStatus = ctx.transactionStatus;
}
});
return task.save((err, task) => {
if (err) {
_winston.default.info(`Rerun Task ${ctx.taskID} could not be updated: ${err}`);
} else {
_winston.default.info(`Rerun Task ${ctx.taskID} - Updated successfully with rerun transaction details.`);
}
return done(null, task);
});
});
}
/*
* Koa middleware for updating original transaction with childID
*/
async function koaMiddleware(ctx, next) {
const setAttempt = (0, _util.promisify)(setAttemptNumber);
await setAttempt(ctx); // do intial yield for koa to come back to ctx function with updated ctx object
await next();
const _updateOriginalTransaction = (0, _util.promisify)(updateOriginalTransaction);
await _updateOriginalTransaction(ctx);
const _updateTask = (0, _util.promisify)(updateTask);
await _updateTask(ctx);
}
//# sourceMappingURL=rerunUpdateTransactionTask.js.map