UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

117 lines (93 loc) 3.17 kB
"use strict"; 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