nano-queries
Version:
Simple and powerful database-agnostic query builder (SQL & NoSQL)
39 lines (37 loc) • 4.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.QueryBuilder = void 0;
const PreparedValue_1 = require("./core/PreparedValue");
const Query_1 = require("./core/Query");
const RawSegment_1 = require("./core/RawSegment");
const segments_1 = require("./utils/segments");
class QueryBuilder extends Query_1.Query {
options;
constructor({ join = null } = {}) {
super();
this.options = { join };
}
raw(...segments) {
this.addSegment(...segments);
return this;
}
value = (value) => {
return this.raw(new PreparedValue_1.PreparedValue(value));
};
getSegments() {
const { join } = this.options;
const preparedQuery = [];
this.segments.forEach((segment) => {
if ((0, segments_1.isEmptySegment)(segment))
return;
// Add divider between segments
if (preparedQuery.length > 0 && join !== null) {
preparedQuery.push(new RawSegment_1.RawSegment(join));
}
preparedQuery.push(segment);
});
return preparedQuery;
}
}
exports.QueryBuilder = QueryBuilder;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlF1ZXJ5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3REFBcUQ7QUFDckQsd0NBQXFDO0FBQ3JDLGtEQUErQztBQUUvQywrQ0FBa0Q7QUFNbEQsTUFBYSxZQUFhLFNBQVEsYUFBSztJQUNyQixPQUFPLENBQUM7SUFDekIsWUFBWSxFQUFFLElBQUksR0FBRyxJQUFJLEtBQThCLEVBQUU7UUFDeEQsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFHLFFBQTZCO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFTSxLQUFLLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQUU7UUFDeEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksNkJBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztJQUVLLFdBQVc7UUFDakIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFOUIsTUFBTSxhQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2pDLElBQUksSUFBQSx5QkFBYyxFQUFDLE9BQU8sQ0FBQztnQkFBRSxPQUFPO1lBRXBDLCtCQUErQjtZQUMvQixJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQzlDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSx1QkFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDekM7WUFFRCxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxhQUFhLENBQUM7SUFDdEIsQ0FBQztDQUNEO0FBbENELG9DQWtDQyIsImZpbGUiOiJRdWVyeUJ1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcmVwYXJlZFZhbHVlIH0gZnJvbSAnLi9jb3JlL1ByZXBhcmVkVmFsdWUnO1xuaW1wb3J0IHsgUXVlcnkgfSBmcm9tICcuL2NvcmUvUXVlcnknO1xuaW1wb3J0IHsgUmF3U2VnbWVudCB9IGZyb20gJy4vY29yZS9SYXdTZWdtZW50JztcbmltcG9ydCB7IElRdWVyeSwgUHJpbWl0aXZlVmFsdWUsIFF1ZXJ5U2VnbWVudCwgUmF3UXVlcnlQYXJhbWV0ZXIgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGlzRW1wdHlTZWdtZW50IH0gZnJvbSAnLi91dGlscy9zZWdtZW50cyc7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5Q29uc3RydWN0b3JPcHRpb25zID0ge1xuXHRqb2luPzogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUJ1aWxkZXIgZXh0ZW5kcyBRdWVyeSBpbXBsZW1lbnRzIElRdWVyeSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucztcblx0Y29uc3RydWN0b3IoeyBqb2luID0gbnVsbCB9OiBRdWVyeUNvbnN0cnVjdG9yT3B0aW9ucyA9IHt9KSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMub3B0aW9ucyA9IHsgam9pbiB9O1xuXHR9XG5cblx0cHVibGljIHJhdyguLi5zZWdtZW50czogUmF3UXVlcnlQYXJhbWV0ZXJbXSkge1xuXHRcdHRoaXMuYWRkU2VnbWVudCguLi5zZWdtZW50cyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgdmFsdWUgPSAodmFsdWU6IFByaW1pdGl2ZVZhbHVlKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMucmF3KG5ldyBQcmVwYXJlZFZhbHVlKHZhbHVlKSk7XG5cdH07XG5cblx0cHVibGljIGdldFNlZ21lbnRzKCkge1xuXHRcdGNvbnN0IHsgam9pbiB9ID0gdGhpcy5vcHRpb25zO1xuXG5cdFx0Y29uc3QgcHJlcGFyZWRRdWVyeTogUXVlcnlTZWdtZW50W10gPSBbXTtcblx0XHR0aGlzLnNlZ21lbnRzLmZvckVhY2goKHNlZ21lbnQpID0+IHtcblx0XHRcdGlmIChpc0VtcHR5U2VnbWVudChzZWdtZW50KSkgcmV0dXJuO1xuXG5cdFx0XHQvLyBBZGQgZGl2aWRlciBiZXR3ZWVuIHNlZ21lbnRzXG5cdFx0XHRpZiAocHJlcGFyZWRRdWVyeS5sZW5ndGggPiAwICYmIGpvaW4gIT09IG51bGwpIHtcblx0XHRcdFx0cHJlcGFyZWRRdWVyeS5wdXNoKG5ldyBSYXdTZWdtZW50KGpvaW4pKTtcblx0XHRcdH1cblxuXHRcdFx0cHJlcGFyZWRRdWVyeS5wdXNoKHNlZ21lbnQpO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHByZXBhcmVkUXVlcnk7XG5cdH1cbn1cbiJdfQ==