cartodb/lib/assets/javascripts/builder/helpers/query-utils-model.js

51 lines
1.1 KiB
JavaScript
Raw Normal View History

2020-06-15 10:58:47 +08:00
var _ = require('underscore');
var Backbone = require('backbone');
var COUNT_SQL_TEMPLATE = 'select count(*) from (<%= subquery %>) st';
module.exports = Backbone.Collection.extend({
url: function () {
return this._configModel.getSqlApiUrl();
},
initialize: function (opts) {
opts = opts || {};
this._subquery = opts.subquery;
this._configModel = opts.configModel;
},
fetchCount: function (callback) {
var opts = {};
var count = -1;
opts.data = {
api_key: this._configModel.get('api_key'),
q: this._getCountSQL()
};
opts.method = this._httpMethod();
opts.error = function (coll, resp) {
callback && callback(count);
};
opts.success = function (coll, resp, options) {
if (resp.rows && resp.rows.length) {
count = resp.rows[0].count;
}
callback && callback(count);
};
return Backbone.Collection.prototype.fetch.call(this, opts);
},
_getCountSQL: function (excludeColumns) {
return _.template(COUNT_SQL_TEMPLATE)({
subquery: this._subquery
});
},
_httpMethod: function () {
return 'GET';
}
});