nano-queries
Version:
Simple and powerful database-agnostic query builder (SQL & NoSQL)
26 lines (24 loc) • 3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SetExpression = void 0;
const QueryBuilder_1 = require("../QueryBuilder");
const GroupExpression_1 = require("./GroupExpression");
class SetExpression extends QueryBuilder_1.QueryBuilder {
constructor(...segments) {
super({ join: null });
this.raw(...segments);
}
withParenthesis() {
return new GroupExpression_1.GroupExpression(this);
}
getSegments() {
const query = new QueryBuilder_1.QueryBuilder();
super.getSegments().forEach((item, index) => {
const preparedItem = item instanceof SetExpression ? item.withParenthesis() : item;
query.raw(index > 0 ? ',' : undefined, preparedItem);
});
return query.getSegments();
}
}
exports.SetExpression = SetExpression;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNxbC9TZXRFeHByZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtEQUErQztBQUUvQyx1REFBb0Q7QUFFcEQsTUFBYSxhQUFjLFNBQVEsMkJBQVk7SUFDOUMsWUFBWSxHQUFHLFFBQTZCO1FBQzNDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXRCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRU0sZUFBZTtRQUNyQixPQUFPLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sV0FBVztRQUNqQixNQUFNLEtBQUssR0FBRyxJQUFJLDJCQUFZLEVBQUUsQ0FBQztRQUVqQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzNDLE1BQU0sWUFBWSxHQUNqQixJQUFJLFlBQVksYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMvRCxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUNEO0FBdEJELHNDQXNCQyIsImZpbGUiOiJzcWwvU2V0RXhwcmVzc2lvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5QnVpbGRlciB9IGZyb20gJy4uL1F1ZXJ5QnVpbGRlcic7XG5pbXBvcnQgeyBJUXVlcnksIFF1ZXJ5U2VnbWVudCwgUmF3UXVlcnlQYXJhbWV0ZXIgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHcm91cEV4cHJlc3Npb24gfSBmcm9tICcuL0dyb3VwRXhwcmVzc2lvbic7XG5cbmV4cG9ydCBjbGFzcyBTZXRFeHByZXNzaW9uIGV4dGVuZHMgUXVlcnlCdWlsZGVyIGltcGxlbWVudHMgSVF1ZXJ5IHtcblx0Y29uc3RydWN0b3IoLi4uc2VnbWVudHM6IFJhd1F1ZXJ5UGFyYW1ldGVyW10pIHtcblx0XHRzdXBlcih7IGpvaW46IG51bGwgfSk7XG5cblx0XHR0aGlzLnJhdyguLi5zZWdtZW50cyk7XG5cdH1cblxuXHRwdWJsaWMgd2l0aFBhcmVudGhlc2lzKCkge1xuXHRcdHJldHVybiBuZXcgR3JvdXBFeHByZXNzaW9uKHRoaXMpO1xuXHR9XG5cblx0cHVibGljIGdldFNlZ21lbnRzKCk6IFF1ZXJ5U2VnbWVudFtdIHtcblx0XHRjb25zdCBxdWVyeSA9IG5ldyBRdWVyeUJ1aWxkZXIoKTtcblxuXHRcdHN1cGVyLmdldFNlZ21lbnRzKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcblx0XHRcdGNvbnN0IHByZXBhcmVkSXRlbSA9XG5cdFx0XHRcdGl0ZW0gaW5zdGFuY2VvZiBTZXRFeHByZXNzaW9uID8gaXRlbS53aXRoUGFyZW50aGVzaXMoKSA6IGl0ZW07XG5cdFx0XHRxdWVyeS5yYXcoaW5kZXggPiAwID8gJywnIDogdW5kZWZpbmVkLCBwcmVwYXJlZEl0ZW0pO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHF1ZXJ5LmdldFNlZ21lbnRzKCk7XG5cdH1cbn1cbiJdfQ==