38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
const queryUtils = require('../utils/query-utils');
|
|
|
|
function OverviewsMetadataBackend (pgQueryRunner) {
|
|
this.pgQueryRunner = pgQueryRunner;
|
|
}
|
|
|
|
module.exports = OverviewsMetadataBackend;
|
|
|
|
OverviewsMetadataBackend.prototype.getOverviewsMetadata = function (username, sql, callback) {
|
|
// FIXME: Currently using internal function _cdb_schema_name
|
|
// CDB_Overviews should provide the schema information directly.
|
|
const query = `
|
|
SELECT *, cartodb._cdb_schema_name(base_table)
|
|
FROM cartodb.CDB_Overviews(
|
|
cartodb.CDB_QueryTablesText($windshaft$${queryUtils.substituteDummyTokens(sql)}$windshaft$)
|
|
);
|
|
`;
|
|
this.pgQueryRunner.run(username, query, function handleOverviewsRows (err, rows) {
|
|
if (err) {
|
|
callback(err);
|
|
return;
|
|
}
|
|
var metadata = rows.reduce(function (metadata, row) {
|
|
var table = row.base_table;
|
|
var schema = row._cdb_schema_name;
|
|
if (!metadata[table]) {
|
|
metadata[table] = {};
|
|
}
|
|
metadata[table][row.z] = { table: row.overview_table };
|
|
metadata[table].schema = schema;
|
|
return metadata;
|
|
}, {});
|
|
return callback(null, metadata);
|
|
});
|
|
};
|