hedera-web/js/sql/filter.js

50 lines
1.0 KiB
JavaScript

var Operation = require('./operation');
var Value = require('./value');
/**
* The equivalent of a SQL filter expression. It allows to automatically build
* SQL filters based on lot parameters.
*/
module.exports = new Class({
Extends: Operation
,Tag: 'sql-filter'
/**
* Checks if any of filters childs are ready.
*/
,isReady: function(params) {
var exprs = this.exprs;
for (var i = exprs.length; i--;)
if (exprs[i].isReady(params))
return true;
return false;
}
/**
* Renders the filter as an SQL expression. If any of its childs isn't
* ready is ommitted from the expression. If all of its childs aren't ready
* renders the TRUE expression.
*/
,render: function(params) {
var newOp;
var newExprs = [];
this.exprs.forEach(function(expr) {
if (expr.isReady(params))
newExprs.push(expr);
})
if (newExprs.length > 0)
newOp = new Operation({
type: this.type,
exprs: newExprs
});
else
newOp = new Value({value: true});
return newOp.render(params);
}
});