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:
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user