UNPKG

nano-queries

Version:

Simple and powerful database-agnostic query builder (SQL & NoSQL)

39 lines (37 loc) 4.2 kB
"use strict"; 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==