diff --git a/lib/cartodb/api/query_tables_api.js b/lib/cartodb/api/query_tables_api.js index 728d1b24..11a416b8 100644 --- a/lib/cartodb/api/query_tables_api.js +++ b/lib/cartodb/api/query_tables_api.js @@ -39,18 +39,7 @@ QueryTablesApi.prototype.getAffectedTablesInQuery = function (username, options, var query = 'SELECT CDB_QueryTables($windshaft$' + prepareSql(sql) + '$windshaft$)'; - // call sql api - if (shouldQueryPostgresDirectly()) { - var psql = new PSQL(options); - psql.query(query, function(err, resultSet) { - var rows = resultSet.rows || []; - handleAffectedTablesInQueryRows(err, rows, callback); - }); - } else { - sqlApi.query(username, options.api_key, query, function(err, rows) { - handleAffectedTablesInQueryRows(err, rows, callback); - }); - } + runQuery(username, options, query, handleAffectedTablesInQueryRows, callback); }; function handleAffectedTablesInQueryRows(err, rows, callback) { @@ -76,17 +65,7 @@ QueryTablesApi.prototype.getAffectedTablesAndLastUpdatedTime = function (usernam 'WHERE m.tabname = any ((SELECT tablenames from querytables)::regclass[])' ].join(' '); - if (shouldQueryPostgresDirectly()) { - var psql = new PSQL(options); - psql.query(query, function(err, resultSet) { - var rows = resultSet.rows || []; - handleAffectedTablesAndLastUpdatedTimeRows(err, rows, callback); - }); - } else { - sqlApi.query(username, options.api_key, query, function(err, rows) { - handleAffectedTablesAndLastUpdatedTimeRows(err, rows, callback); - }); - } + runQuery(username, options, query, handleAffectedTablesAndLastUpdatedTimeRows, callback); }; function handleAffectedTablesAndLastUpdatedTimeRows(err, rows, callback) { @@ -110,6 +89,21 @@ function handleAffectedTablesAndLastUpdatedTimeRows(err, rows, callback) { } +function runQuery(username, options, query, queryHandler, callback) { + if (shouldQueryPostgresDirectly()) { + var psql = new PSQL(options); + psql.query(query, function(err, resultSet) { + var rows = resultSet.rows || []; + queryHandler(err, rows, callback); + }); + } else { + sqlApi.query(username, options.api_key, query, function(err, rows) { + queryHandler(err, rows, callback); + }); + } +} + + function prepareSql(sql) { return sql .replace(affectedTableRegexCache.bbox, 'ST_MakeEnvelope(0,0,0,0)')