Refactor OverviewsApi

Separate metadata processing into collecting each layer's information (map)
and then organizing metadata per tables/zoom levels (reduce).
This commit is contained in:
Javier Goizueta
2016-01-22 11:03:01 +01:00
parent 1f6d5cfd6d
commit 8d691b2048
+15 -12
View File
@@ -19,8 +19,6 @@ OverviewsApi.prototype.getOverviewsMetadata = function (username, sql, callback)
if (err) {
callback(err);
} else {
var metadata = {};
var parallelism = 2;
var q = queue(parallelism);
@@ -33,23 +31,28 @@ OverviewsApi.prototype.getOverviewsMetadata = function (username, sql, callback)
done(new Error('could not get overviews metadata: ' + msg));
return;
}
if ( rows.length > 0 ) {
var table_metadata = {};
for ( var i=0; i<rows.length; ++i ) {
var row = rows[i];
table_metadata[row.z] = { table: row.overview_table };
}
metadata[tableName] = table_metadata;
}
done(null);
done(null, [tableName, rows]);
});
});
});
q.awaitAll(function(err){
var metadata = {};
q.awaitAll(function(err, results){
if (err) {
return callback(err);
} else {
results.forEach(function(table_rows) {
var tableName = table_rows[0];
var rows = table_rows[1];
if ( rows.length > 0 ) {
var table_metadata = {};
for ( var i=0; i<rows.length; ++i ) {
var row = rows[i];
table_metadata[row.z] = { table: row.overview_table };
}
metadata[tableName] = table_metadata;
}
});
return callback(null, metadata);
}
});