All Downloads are FREE. Search and download functionalities are using the official Maven repository.

js.prompto.memstore.MemQueryBuilder.js Maven / Gradle / Ivy

var QueryBuilder = require("../store/Store").QueryBuilder;
var AndPredicate = require("./AndPredicate").AndPredicate;
var OrPredicate = require("./OrPredicate").OrPredicate;
var NotPredicate = require("./NotPredicate").NotPredicate;
var MatchPredicate = require("./MatchPredicate").MatchPredicate;

function MemQueryBuilder() {
    QueryBuilder.call(this);
    this.orderBys = null;
    this.predicates = null;
    this.first = null;
    this.last = null;
    return this;
}

MemQueryBuilder.prototype = Object.create(QueryBuilder.prototype);
MemQueryBuilder.prototype.constructor = MemQueryBuilder;

MemQueryBuilder.prototype.verify = function(fieldName, matchOp, value) {
    if(this.predicates==null)
        this.predicates = [];
    this.predicates.push(new MatchPredicate(fieldName, matchOp, value));
};

MemQueryBuilder.prototype.and = function() {
    var right = this.predicates.pop();
    var left = this.predicates.pop();
    this.predicates.push(new AndPredicate(left, right));
};

MemQueryBuilder.prototype.or = function() {
    var right = this.predicates.pop();
    var left = this.predicates.pop();
    this.predicates.push(new OrPredicate(left, right));
};

MemQueryBuilder.prototype.not = function() {
    var top = this.predicates.pop();
    this.predicates.push(new NotPredicate(top));
};


MemQueryBuilder.prototype.setFirst = function(value) {
    this.first = value;
};

MemQueryBuilder.prototype.setLast = function(value) {
    this.last = value;
};


MemQueryBuilder.prototype.build = function() {
    return {
        predicate: this.predicates==null ? null : this.predicates.pop(),
        first: this.first,
        last: this.last,
        orderBys : this.orderBys
    };
};

MemQueryBuilder.prototype.addOrderByClause = function(info, descending) {
    if (this.orderBys == null)
        this.orderBys = [];
    this.orderBys.push({info: info, descending: descending});
};

exports.MemQueryBuilder = MemQueryBuilder;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy