openhim-core
Version:
The OpenHIM core application that provides logging and routing of http requests
83 lines (65 loc) • 2.3 kB
JavaScript
var Q, SDC, Task, Transaction, application, config, domain, logger, os, sdc, statsdServer;
Q = require("q");
Transaction = require("../model/transactions").Transaction;
Task = require("../model/tasks").Task;
logger = require("winston");
config = require('../config/config');
statsdServer = config.get('statsd');
application = config.get('application');
SDC = require('statsd-client');
os = require('os');
domain = (os.hostname()) + "." + application.name + ".appMetrics";
sdc = new SDC(statsdServer);
exports.updateOriginalTransaction = function(ctx, done) {
return Transaction.findOne({
_id: ctx.parentID
}, function(err, transaction) {
transaction.childIDs.push(ctx.transactionId);
return transaction.save(function(err, tx) {
if (err) {
logger.info('Original transaction #' + transaction._id + ' could not be updated: ' + err);
} else {
logger.info('Original transaction #' + tx._id + ' - Updated successfully with childID');
}
return done(null, transaction);
});
});
};
exports.updateTask = function(ctx, done) {
return Task.findOne({
_id: ctx.taskID
}, function(err, task) {
task.transactions.forEach(function(tx) {
if (tx.tid === ctx.parentID) {
tx.rerunID = ctx.transactionId;
return tx.rerunStatus = ctx.transactionStatus;
}
});
return task.save(function(err, task) {
if (err) {
logger.info('Rerun Task #' + ctx.taskID + ' could not be updated: ' + err);
} else {
logger.info('Rerun Task #' + ctx.taskID + ' - Updated successfully with rerun transaction details.');
}
return done(null, task);
});
});
};
/*
* Koa middleware for updating original transaction with childID
*/
exports.koaMiddleware = function*(next) {
var startTime, updateOriginalTransaction, updateTask;
(yield next);
if (statsdServer.enabled) {
startTime = new Date();
}
updateOriginalTransaction = Q.denodeify(exports.updateOriginalTransaction);
(yield updateOriginalTransaction(this));
updateTask = Q.denodeify(exports.updateTask);
(yield updateTask(this));
if (statsdServer.enabled) {
return sdc.timing(domain + ".rerunUpdateTransactionMiddleware", startTime);
}
};
//# sourceMappingURL=rerunUpdateTransactionTask.js.map