Use named map provider cache to retrieve providers

This commit is contained in:
Raul Ochoa
2015-07-14 20:53:06 +02:00
parent 6d3ef11a7c
commit 07c920bad5
5 changed files with 41 additions and 25 deletions
+24
View File
@@ -0,0 +1,24 @@
var NamedMapMapConfigProvider = require('../models/mapconfig/named_map_provider');
function NamedMapProviderCache(templateMaps, pgConnection, userLimitsApi, queryTablesApi) {
this.templateMaps = templateMaps;
this.pgConnection = pgConnection;
this.userLimitsApi = userLimitsApi;
this.queryTablesApi = queryTablesApi;
}
module.exports = NamedMapProviderCache;
NamedMapProviderCache.prototype.get = function(user, templateId, config, authToken, params) {
return new NamedMapMapConfigProvider(
this.templateMaps,
this.pgConnection,
this.userLimitsApi,
this.queryTablesApi,
user,
templateId,
config,
authToken,
params
);
};
+1
View File
@@ -186,6 +186,7 @@ MapController.prototype.instantiateTemplate = function(req, res, prepareParamsFn
self.templateMaps,
self.pgConnection,
self.userLimitsApi,
self.queryTablesApi,
cdbuser,
req.params.template_id,
templateParams,
+6 -16
View File
@@ -4,20 +4,16 @@ var _ = require('underscore');
var NamedMapsCacheEntry = require('../cache/model/named_maps_entry');
var cors = require('../middleware/cors');
var NamedMapMapConfigProvider = require('../models/mapconfig/named_map_provider');
var TablesCacheEntry = require('../cache/model/database_tables_entry');
function NamedMapsController(app, pgConnection, templateMaps, tileBackend, previewBackend, surrogateKeysCache,
tablesExtentApi, userLimitsApi, queryTablesApi) {
function NamedMapsController(app, namedMapProviderCache, tileBackend, previewBackend, surrogateKeysCache,
tablesExtentApi) {
this.app = app;
this.pgConnection = pgConnection;
this.templateMaps = templateMaps;
this.namedMapProviderCache = namedMapProviderCache;
this.tileBackend = tileBackend;
this.previewBackend = previewBackend;
this.surrogateKeysCache = surrogateKeysCache;
this.tablesExtentApi = tablesExtentApi;
this.userLimitsApi = userLimitsApi;
this.queryTablesApi = queryTablesApi;
}
module.exports = NamedMapsController;
@@ -39,7 +35,7 @@ NamedMapsController.prototype.sendResponse = function(req, res, resource, header
var dbName = req.params.dbname;
step(
function getAffectedTablesAndLastUpdatedTime() {
namedMapProvider.getAffectedTablesAndLastUpdatedTime(self.queryTablesApi, this);
namedMapProvider.getAffectedTablesAndLastUpdatedTime(this);
},
function sendResponse(err, result) {
req.profiler.done('affectedTables');
@@ -78,10 +74,7 @@ NamedMapsController.prototype.tile = function(req, res) {
self.app.req2params(req, this);
},
function getTile() {
namedMapProvider = new NamedMapMapConfigProvider(
self.templateMaps,
self.pgConnection,
self.userLimitsApi,
namedMapProvider = self.namedMapProviderCache.get(
cdbUser,
req.params.template_id,
req.query.config,
@@ -122,10 +115,7 @@ NamedMapsController.prototype.staticMap = function(req, res) {
},
function getTemplate(err) {
assert.ifError(err);
namedMapProvider = new NamedMapMapConfigProvider(
self.templateMaps,
self.pgConnection,
self.userLimitsApi,
namedMapProvider = self.namedMapProviderCache.get(
cdbUser,
req.params.template_id,
req.query.config,
@@ -10,11 +10,12 @@ var templateName = require('../../backends/template_maps').templateName;
* @constructor
* @type {NamedMapMapConfigProvider}
*/
function NamedMapMapConfigProvider(templateMaps, pgConnection, userLimitsApi, owner, templateId, config, authToken,
params) {
function NamedMapMapConfigProvider(templateMaps, pgConnection, userLimitsApi, queryTablesApi,
owner, templateId, config, authToken, params) {
this.templateMaps = templateMaps;
this.pgConnection = pgConnection;
this.userLimitsApi = userLimitsApi;
this.queryTablesApi = queryTablesApi;
this.owner = owner;
this.templateName = templateName(templateId);
this.config = config;
@@ -201,7 +202,7 @@ NamedMapMapConfigProvider.prototype.getTemplateName = function() {
return this.templateName;
};
NamedMapMapConfigProvider.prototype.getAffectedTablesAndLastUpdatedTime = function(queryTablesApi, callback) {
NamedMapMapConfigProvider.prototype.getAffectedTablesAndLastUpdatedTime = function(callback) {
var self = this;
if (this.affectedTablesAndLastUpdate !== null) {
@@ -220,7 +221,7 @@ NamedMapMapConfigProvider.prototype.getAffectedTablesAndLastUpdatedTime = functi
},
function getAffectedTables(err, sql) {
assert.ifError(err);
queryTablesApi.getAffectedTablesAndLastUpdatedTime(self.owner, sql, this);
self.queryTablesApi.getAffectedTablesAndLastUpdatedTime(self.owner, sql, this);
},
function finish(err, result) {
self.affectedTablesAndLastUpdate = result;
+5 -5
View File
@@ -21,6 +21,7 @@ var QueryTablesApi = require('./api/query_tables_api');
var UserLimitsApi = require('./api/user_limits_api');
var AuthApi = require('./api/auth_api');
var LayergroupAffectedTablesCache = require('./cache/layergroup_affected_tables');
var NamedMapProviderCache = require('./cache/named_map_provider_cache');
var PgQueryRunner = require('./backends/pg_query_runner');
var PgConnection = require('./backends/pg_connection');
@@ -165,6 +166,8 @@ module.exports = function(serverOptions) {
var layergroupAffectedTablesCache = new LayergroupAffectedTablesCache();
app.layergroupAffectedTablesCache = layergroupAffectedTablesCache;
var namedMapProviderCache = new NamedMapProviderCache(templateMaps, pgConnection, userLimitsApi, queryTablesApi);
var authApi = new AuthApi(pgConnection, metadataBackend, mapStore, templateMaps);
app.findStatusCode = function(err) {
@@ -215,14 +218,11 @@ module.exports = function(serverOptions) {
new controller.NamedMaps(
app,
pgConnection,
templateMaps,
namedMapProviderCache,
tileBackend,
previewBackend,
surrogateKeysCache,
tablesExtentApi,
userLimitsApi,
queryTablesApi
tablesExtentApi
).register(app);
new controller.NamedMapsAdmin(app, templateMaps, authApi).register(app);