2018-03-24 04:20:37 +08:00
|
|
|
const layergroupToken = require('../../middleware/layergroup-token');
|
|
|
|
const cleanUpQueryParams = require('../../middleware/clean-up-query-params');
|
|
|
|
const credentials = require('../../middleware/credentials');
|
|
|
|
const dbConnSetup = require('../../middleware/db-conn-setup');
|
|
|
|
const authorize = require('../../middleware/authorize');
|
|
|
|
const rateLimit = require('../../middleware/rate-limit');
|
|
|
|
const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit;
|
|
|
|
const sendResponse = require('../../middleware/send-response');
|
|
|
|
const dbParamsFromResLocals = require('../../utils/database-params');
|
|
|
|
|
|
|
|
module.exports = class AnalysisController {
|
|
|
|
constructor (
|
|
|
|
analysisStatusBackend,
|
|
|
|
pgConnection,
|
|
|
|
mapStore,
|
|
|
|
userLimitsApi,
|
|
|
|
layergroupAffectedTablesCache,
|
|
|
|
authApi,
|
|
|
|
surrogateKeysCache
|
|
|
|
) {
|
|
|
|
this.analysisStatusBackend = analysisStatusBackend;
|
|
|
|
this.pgConnection = pgConnection;
|
|
|
|
this.mapStore = mapStore;
|
|
|
|
this.userLimitsApi = userLimitsApi;
|
|
|
|
this.layergroupAffectedTablesCache = layergroupAffectedTablesCache;
|
|
|
|
this.authApi = authApi;
|
|
|
|
this.surrogateKeysCache = surrogateKeysCache;
|
|
|
|
}
|
|
|
|
|
2018-03-28 00:46:54 +08:00
|
|
|
register (mapRouter) {
|
|
|
|
mapRouter.get(
|
|
|
|
`/:token/analysis/node/:nodeId`,
|
2018-03-24 04:20:37 +08:00
|
|
|
layergroupToken(),
|
|
|
|
credentials(),
|
|
|
|
authorize(this.authApi),
|
|
|
|
dbConnSetup(this.pgConnection),
|
|
|
|
rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.ANALYSIS),
|
|
|
|
cleanUpQueryParams(),
|
|
|
|
analysisNodeStatus(this.analysisStatusBackend),
|
|
|
|
sendResponse()
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
function analysisNodeStatus (analysisStatusBackend) {
|
|
|
|
return function analysisNodeStatusMiddleware(req, res, next) {
|
|
|
|
const { nodeId } = req.params;
|
|
|
|
const dbParams = dbParamsFromResLocals(res.locals);
|
|
|
|
|
|
|
|
analysisStatusBackend.getNodeStatus(nodeId, dbParams, (err, nodeStatus, stats = {}) => {
|
|
|
|
req.profiler.add(stats);
|
|
|
|
|
|
|
|
if (err) {
|
|
|
|
err.label = 'GET NODE STATUS';
|
|
|
|
return next(err);
|
|
|
|
}
|
|
|
|
|
|
|
|
res.set({
|
|
|
|
'Cache-Control': 'public,max-age=5',
|
|
|
|
'Last-Modified': new Date().toUTCString()
|
|
|
|
});
|
|
|
|
|
|
|
|
res.body = nodeStatus;
|
|
|
|
|
|
|
|
next();
|
|
|
|
});
|
|
|
|
};
|
|
|
|
}
|