nano-queries
Version:
Simple and powerful database-agnostic query builder (SQL & NoSQL)
47 lines (45 loc) • 4.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConditionClause = void 0;
const Query_1 = require("../core/Query");
const QueryBuilder_1 = require("../QueryBuilder");
class ConditionClause extends Query_1.Query {
clauses = [];
constructor() {
super();
}
and(...query) {
const filteredQuery = (0, Query_1.filterOutEmptySegments)(query);
if (filteredQuery.length > 0) {
this.clauses.push({
join: 'AND',
clause: new Query_1.Query(...filteredQuery),
});
}
return this;
}
or(...query) {
const filteredQuery = (0, Query_1.filterOutEmptySegments)(query);
if (filteredQuery.length > 0) {
this.clauses.push({
join: 'OR',
clause: new Query_1.Query(...filteredQuery),
});
}
return this;
}
getSegments() {
const query = new QueryBuilder_1.QueryBuilder({ join: ' ' });
if (this.clauses.length > 0) {
this.clauses.forEach((clause, index) => {
query.raw(index > 0 ? clause.join : undefined, clause.clause);
});
}
return query.getSegments();
}
size() {
return this.clauses.length;
}
}
exports.ConditionClause = ConditionClause;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNxbC9Db25kaXRpb25DbGF1c2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQThEO0FBQzlELGtEQUErQztBQUcvQyxNQUFhLGVBQWdCLFNBQVEsYUFBSztJQUN0QixPQUFPLEdBR3JCLEVBQUUsQ0FBQztJQUNSO1FBQ0MsS0FBSyxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQUcsS0FBMEI7UUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBQSw4QkFBc0IsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNqQixJQUFJLEVBQUUsS0FBSztnQkFDWCxNQUFNLEVBQUUsSUFBSSxhQUFLLENBQUMsR0FBRyxhQUFhLENBQUM7YUFDbkMsQ0FBQyxDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFTSxFQUFFLENBQUMsR0FBRyxLQUEwQjtRQUN0QyxNQUFNLGFBQWEsR0FBRyxJQUFBLDhCQUFzQixFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksRUFBRSxJQUFJO2dCQUNWLE1BQU0sRUFBRSxJQUFJLGFBQUssQ0FBQyxHQUFHLGFBQWEsQ0FBQzthQUNuQyxDQUFDLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVNLFdBQVc7UUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSwyQkFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFOUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3RDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvRCxDQUFDLENBQUMsQ0FBQztTQUNIO1FBRUQsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLElBQUk7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzVCLENBQUM7Q0FDRDtBQWhERCwwQ0FnREMiLCJmaWxlIjoic3FsL0NvbmRpdGlvbkNsYXVzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbHRlck91dEVtcHR5U2VnbWVudHMsIFF1ZXJ5IH0gZnJvbSAnLi4vY29yZS9RdWVyeSc7XG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXIgfSBmcm9tICcuLi9RdWVyeUJ1aWxkZXInO1xuaW1wb3J0IHsgSVF1ZXJ5LCBRdWVyeVNlZ21lbnQsIFJhd1F1ZXJ5UGFyYW1ldGVyIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uQ2xhdXNlIGV4dGVuZHMgUXVlcnkgaW1wbGVtZW50cyBJUXVlcnkge1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgY2xhdXNlczogQXJyYXk8e1xuXHRcdGNsYXVzZTogUXVlcnlTZWdtZW50O1xuXHRcdGpvaW46ICdBTkQnIHwgJ09SJztcblx0fT4gPSBbXTtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblx0fVxuXG5cdHB1YmxpYyBhbmQoLi4ucXVlcnk6IFJhd1F1ZXJ5UGFyYW1ldGVyW10pIHtcblx0XHRjb25zdCBmaWx0ZXJlZFF1ZXJ5ID0gZmlsdGVyT3V0RW1wdHlTZWdtZW50cyhxdWVyeSk7XG5cdFx0aWYgKGZpbHRlcmVkUXVlcnkubGVuZ3RoID4gMCkge1xuXHRcdFx0dGhpcy5jbGF1c2VzLnB1c2goe1xuXHRcdFx0XHRqb2luOiAnQU5EJyxcblx0XHRcdFx0Y2xhdXNlOiBuZXcgUXVlcnkoLi4uZmlsdGVyZWRRdWVyeSksXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBvciguLi5xdWVyeTogUmF3UXVlcnlQYXJhbWV0ZXJbXSkge1xuXHRcdGNvbnN0IGZpbHRlcmVkUXVlcnkgPSBmaWx0ZXJPdXRFbXB0eVNlZ21lbnRzKHF1ZXJ5KTtcblx0XHRpZiAoZmlsdGVyZWRRdWVyeS5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aGlzLmNsYXVzZXMucHVzaCh7XG5cdFx0XHRcdGpvaW46ICdPUicsXG5cdFx0XHRcdGNsYXVzZTogbmV3IFF1ZXJ5KC4uLmZpbHRlcmVkUXVlcnkpLFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0U2VnbWVudHMoKTogUXVlcnlTZWdtZW50W10ge1xuXHRcdGNvbnN0IHF1ZXJ5ID0gbmV3IFF1ZXJ5QnVpbGRlcih7IGpvaW46ICcgJyB9KTtcblxuXHRcdGlmICh0aGlzLmNsYXVzZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0dGhpcy5jbGF1c2VzLmZvckVhY2goKGNsYXVzZSwgaW5kZXgpID0+IHtcblx0XHRcdFx0cXVlcnkucmF3KGluZGV4ID4gMCA/IGNsYXVzZS5qb2luIDogdW5kZWZpbmVkLCBjbGF1c2UuY2xhdXNlKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBxdWVyeS5nZXRTZWdtZW50cygpO1xuXHR9XG5cblx0cHVibGljIHNpemUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuY2xhdXNlcy5sZW5ndGg7XG5cdH1cbn1cbiJdfQ==