feat: initial commit
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.buildQuery = buildQuery;
|
||||
|
||||
var _lodash = require('lodash');
|
||||
|
||||
var _lodash2 = _interopRequireDefault(_lodash);
|
||||
|
||||
var _dfunc = require('./dfunc');
|
||||
|
||||
var _dfunc2 = _interopRequireDefault(_dfunc);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function buildQuery(target, adhocFilters) {
|
||||
var aggregation = target.aggregation,
|
||||
metric = target.metric,
|
||||
tags = target.tags,
|
||||
functions = target.functions;
|
||||
|
||||
var query = aggregation + ':' + metric;
|
||||
|
||||
var functionInstances = getFunctionInstances(functions);
|
||||
|
||||
if (tags && tags.length || adhocFilters && adhocFilters.length) {
|
||||
query += '{';
|
||||
|
||||
if (tags && tags.length) {
|
||||
query += tags.join(',');
|
||||
}
|
||||
|
||||
if (adhocFilters && adhocFilters.length) {
|
||||
var adhocTags = buildAdHocFilterString(adhocFilters);
|
||||
if (tags && tags.length) {
|
||||
query += ',';
|
||||
}
|
||||
query += adhocTags;
|
||||
}
|
||||
|
||||
query += '}';
|
||||
} else {
|
||||
query += '{*}';
|
||||
}
|
||||
|
||||
if (target.as) {
|
||||
query += '.' + target.as + '()';
|
||||
}
|
||||
|
||||
var groupedFuncs = _lodash2.default.groupBy(functionInstances, function (func) {
|
||||
if (func.def.append) {
|
||||
return 'appends';
|
||||
} else {
|
||||
return 'wraps';
|
||||
}
|
||||
});
|
||||
|
||||
_lodash2.default.each(groupedFuncs.appends, function (func) {
|
||||
query += '.' + func.render();
|
||||
});
|
||||
|
||||
_lodash2.default.each(groupedFuncs.wraps, function (func) {
|
||||
query = func.render(query);
|
||||
});
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
function getFunctionInstances(functions) {
|
||||
return _lodash2.default.map(functions, function (func) {
|
||||
var f = _dfunc2.default.createFuncInstance(func.funcDef, { withDefaultParams: false });
|
||||
f.params = func.params.slice();
|
||||
return f;
|
||||
});
|
||||
}
|
||||
|
||||
function buildAdHocFilterString(adhocFilters) {
|
||||
return adhocFilters.map(function (filter) {
|
||||
return filter.key + ':' + filter.value;
|
||||
}).join(',');
|
||||
}
|
||||
//# sourceMappingURL=query_builder.js.map
|
||||
Reference in New Issue
Block a user