Create Map Controller while building server

This commit is contained in:
Daniel García Aubert 2018-03-28 19:58:30 +02:00
parent 57e10a8d2b
commit 5bb5bc42ee
5 changed files with 35 additions and 79 deletions

View File

@ -1,5 +1,4 @@
module.exports = { module.exports = {
Analyses: require('./analyses'), Analyses: require('./analyses'),
Map: require('./map'),
ServerInfo: require('./server_info') ServerInfo: require('./server_info')
}; };

View File

@ -1,7 +1,6 @@
const windshaft = require('windshaft'); const windshaft = require('windshaft');
const MapConfig = windshaft.model.MapConfig; const MapConfig = windshaft.model.MapConfig;
const Datasource = windshaft.model.Datasource; const Datasource = windshaft.model.Datasource;
const ResourceLocator = require('../../models/resource-locator');
const cors = require('../../middleware/cors'); const cors = require('../../middleware/cors');
const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); const cleanUpQueryParams = require('../../middleware/clean-up-query-params');
const credentials = require('../../middleware/credentials'); const credentials = require('../../middleware/credentials');
@ -22,7 +21,6 @@ const layergroupMetadata = require('./middlewares/layergroup-metadata');
const mapError = require('./middlewares/map-error'); const mapError = require('./middlewares/map-error');
const sendResponse = require('../../middleware/send-response'); const sendResponse = require('../../middleware/send-response');
const CreateLayergroupMapConfigProvider = require('../../models/mapconfig/provider/create-layergroup-provider'); const CreateLayergroupMapConfigProvider = require('../../models/mapconfig/provider/create-layergroup-provider');
const LayergroupMetadata = require('../../utils/layergroup-metadata');
const rateLimit = require('../../middleware/rate-limit'); const rateLimit = require('../../middleware/rate-limit');
const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit;
@ -49,7 +47,8 @@ function AnonymousMapController (
layergroupAffectedTables, layergroupAffectedTables,
mapConfigAdapter, mapConfigAdapter,
statsBackend, statsBackend,
authApi authApi,
layergroupMetadata
) { ) {
this.pgConnection = pgConnection; this.pgConnection = pgConnection;
this.templateMaps = templateMaps; this.templateMaps = templateMaps;
@ -58,13 +57,10 @@ function AnonymousMapController (
this.surrogateKeysCache = surrogateKeysCache; this.surrogateKeysCache = surrogateKeysCache;
this.userLimitsApi = userLimitsApi; this.userLimitsApi = userLimitsApi;
this.layergroupAffectedTables = layergroupAffectedTables; this.layergroupAffectedTables = layergroupAffectedTables;
this.mapConfigAdapter = mapConfigAdapter; this.mapConfigAdapter = mapConfigAdapter;
const resourceLocator = new ResourceLocator(global.environment);
this.layergroupMetadata = new LayergroupMetadata(resourceLocator);
this.statsBackend = statsBackend; this.statsBackend = statsBackend;
this.authApi = authApi; this.authApi = authApi;
this.layergroupMetadata = layergroupMetadata;
} }
module.exports = AnonymousMapController; module.exports = AnonymousMapController;
@ -106,7 +102,7 @@ AnonymousMapController.prototype.composeCreateMapMiddleware = function () {
lastModifiedHeader({ now: true }), lastModifiedHeader({ now: true }),
lastUpdatedTimeLayergroup(), lastUpdatedTimeLayergroup(),
layerStats(this.pgConnection, this.statsBackend), layerStats(this.pgConnection, this.statsBackend),
layergroupIdHeader(this.templateMaps ,useTemplateHash), layergroupIdHeader(this.templateMaps, useTemplateHash),
layergroupMetadata(this.layergroupMetadata, includeQuery), layergroupMetadata(this.layergroupMetadata, includeQuery),
sendResponse(), sendResponse(),
mapError({ label, addContext }) mapError({ label, addContext })

View File

@ -1,60 +0,0 @@
const AnonymousMapController = require('./anonymous');
const NamedMapController = require('./named');
module.exports = class MapController {
constructor (
pgConnection,
templateMaps,
mapBackend,
metadataBackend,
surrogateKeysCache,
userLimitsApi,
layergroupAffectedTablesCache,
mapConfigAdapter,
statsBackend,
authApi
) {
this.pgConnection = pgConnection;
this.templateMaps = templateMaps;
this.mapBackend = mapBackend;
this.metadataBackend = metadataBackend;
this.surrogateKeysCache = surrogateKeysCache;
this.userLimitsApi = userLimitsApi;
this.layergroupAffectedTablesCache = layergroupAffectedTablesCache;
this.mapConfigAdapter = mapConfigAdapter;
this.statsBackend = statsBackend;
this.authApi = authApi;
}
register (mapRouter, templateRouter) {
const anonymousMapController = new AnonymousMapController(
this.pgConnection,
this.templateMaps,
this.mapBackend,
this.metadataBackend,
this.surrogateKeysCache,
this.userLimitsApi,
this.layergroupAffectedTablesCache,
this.mapConfigAdapter,
this.statsBackend,
this.authApi
);
anonymousMapController.register(mapRouter);
const namedMapController = new NamedMapController(
this.pgConnection,
this.templateMaps,
this.mapBackend,
this.metadataBackend,
this.surrogateKeysCache,
this.userLimitsApi,
this.layergroupAffectedTablesCache,
this.mapConfigAdapter,
this.statsBackend,
this.authApi
);
namedMapController.register(templateRouter);
}
};

View File

@ -1,4 +1,3 @@
const ResourceLocator = require('../../models/resource-locator');
const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); const cleanUpQueryParams = require('../../middleware/clean-up-query-params');
const credentials = require('../../middleware/credentials'); const credentials = require('../../middleware/credentials');
const dbConnSetup = require('../../middleware/db-conn-setup'); const dbConnSetup = require('../../middleware/db-conn-setup');
@ -19,7 +18,6 @@ const mapError = require('./middlewares/map-error');
const sendResponse = require('../../middleware/send-response'); const sendResponse = require('../../middleware/send-response');
const NamedMapMapConfigProvider = require('../../models/mapconfig/provider/named-map-provider'); const NamedMapMapConfigProvider = require('../../models/mapconfig/provider/named-map-provider');
const CreateLayergroupMapConfigProvider = require('../../models/mapconfig/provider/create-layergroup-provider'); const CreateLayergroupMapConfigProvider = require('../../models/mapconfig/provider/create-layergroup-provider');
const LayergroupMetadata = require('../../utils/layergroup-metadata');
const rateLimit = require('../../middleware/rate-limit'); const rateLimit = require('../../middleware/rate-limit');
const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit;
@ -46,7 +44,8 @@ function NamedMapController (
layergroupAffectedTables, layergroupAffectedTables,
mapConfigAdapter, mapConfigAdapter,
statsBackend, statsBackend,
authApi authApi,
layergroupMetadata
) { ) {
this.pgConnection = pgConnection; this.pgConnection = pgConnection;
this.templateMaps = templateMaps; this.templateMaps = templateMaps;
@ -55,13 +54,10 @@ function NamedMapController (
this.surrogateKeysCache = surrogateKeysCache; this.surrogateKeysCache = surrogateKeysCache;
this.userLimitsApi = userLimitsApi; this.userLimitsApi = userLimitsApi;
this.layergroupAffectedTables = layergroupAffectedTables; this.layergroupAffectedTables = layergroupAffectedTables;
this.mapConfigAdapter = mapConfigAdapter; this.mapConfigAdapter = mapConfigAdapter;
const resourceLocator = new ResourceLocator(global.environment);
this.layergroupMetadata = new LayergroupMetadata(resourceLocator);
this.statsBackend = statsBackend; this.statsBackend = statsBackend;
this.authApi = authApi; this.authApi = authApi;
this.layergroupMetadata = layergroupMetadata;
} }
module.exports = NamedMapController; module.exports = NamedMapController;

View File

@ -7,12 +7,16 @@ var cartodbRedis = require('cartodb-redis');
var _ = require('underscore'); var _ = require('underscore');
var controller = require('./controllers'); var controller = require('./controllers');
const AnalysisLayergroupController = require('./controllers/layergroup/analysis'); const AnalysisLayergroupController = require('./controllers/layergroup/analysis');
const AttributesLayergroupController = require('./controllers/layergroup/attributes'); const AttributesLayergroupController = require('./controllers/layergroup/attributes');
const DataviewLayergroupController = require('./controllers/layergroup/dataview'); const DataviewLayergroupController = require('./controllers/layergroup/dataview');
const PreviewLayergroupController = require('./controllers/layergroup/preview'); const PreviewLayergroupController = require('./controllers/layergroup/preview');
const TileLayergroupController = require('./controllers/layergroup/tile'); const TileLayergroupController = require('./controllers/layergroup/tile');
const AnonymousMapController = require('./controllers/map/anonymous');
const NamedMapController = require('./controllers/map/named');
const AdminTemplateController = require('./controllers/template/admin'); const AdminTemplateController = require('./controllers/template/admin');
const PreviewTemplateController = require('./controllers/template/preview'); const PreviewTemplateController = require('./controllers/template/preview');
const TileTemplateController = require('./controllers/template/tile'); const TileTemplateController = require('./controllers/template/tile');
@ -59,6 +63,9 @@ var MapConfigAdapter = require('./models/mapconfig/adapter');
var StatsBackend = require('./backends/stats'); var StatsBackend = require('./backends/stats');
const ResourceLocator = require('./models/resource-locator');
const LayergroupMetadata = require('./utils/layergroup-metadata');
const lzmaMiddleware = require('./middleware/lzma'); const lzmaMiddleware = require('./middleware/lzma');
const errorMiddleware = require('./middleware/error-middleware'); const errorMiddleware = require('./middleware/error-middleware');
const servedByHostHeader = require('./middleware/served-by-host-header'); const servedByHostHeader = require('./middleware/served-by-host-header');
@ -228,6 +235,9 @@ module.exports = function(serverOptions) {
var TablesExtentApi = require('./api/tables_extent_api'); var TablesExtentApi = require('./api/tables_extent_api');
var tablesExtentApi = new TablesExtentApi(pgQueryRunner); var tablesExtentApi = new TablesExtentApi(pgQueryRunner);
const resourceLocator = new ResourceLocator(global.environment);
const layergroupMetadata = new LayergroupMetadata(resourceLocator);
var versions = getAndValidateVersions(serverOptions); var versions = getAndValidateVersions(serverOptions);
/******************************************************************************************************************* /*******************************************************************************************************************
@ -288,7 +298,7 @@ module.exports = function(serverOptions) {
surrogateKeysCache surrogateKeysCache
).register(mapRouter); ).register(mapRouter);
new controller.Map( new AnonymousMapController(
pgConnection, pgConnection,
templateMaps, templateMaps,
mapBackend, mapBackend,
@ -298,8 +308,23 @@ module.exports = function(serverOptions) {
layergroupAffectedTablesCache, layergroupAffectedTablesCache,
mapConfigAdapter, mapConfigAdapter,
statsBackend, statsBackend,
authApi authApi,
).register(mapRouter, templateRouter); layergroupMetadata
).register(mapRouter);
new NamedMapController(
pgConnection,
templateMaps,
mapBackend,
metadataBackend,
surrogateKeysCache,
userLimitsApi,
layergroupAffectedTablesCache,
mapConfigAdapter,
statsBackend,
authApi,
layergroupMetadata
).register(templateRouter);
new TileTemplateController( new TileTemplateController(
namedMapProviderCache, namedMapProviderCache,