UNPKG

nano-queries

Version:

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

42 lines (40 loc) 4.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Query = exports.filterOutEmptySegments = void 0; const RawSegment_1 = require("./RawSegment"); const filterOutEmptySegments = (segments) => segments.filter((segment) => segment !== undefined); exports.filterOutEmptySegments = filterOutEmptySegments; class Query { segments = []; constructor(...segments) { if (segments) { this.addSegment(...segments); } } /** * Returns query segments number */ size() { return this.getSegments().length; } /** * Returns final query that may be preprocessed * Returned query will be used while compile SQL */ getSegments() { return this.segments; } addSegment(...segments) { this.segments.push(...(0, exports.filterOutEmptySegments)(segments).map((segment) => { switch (typeof segment) { case 'string': case 'number': return new RawSegment_1.RawSegment(segment); default: return segment === null ? new RawSegment_1.RawSegment(null) : segment; } })); } } exports.Query = Query; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUvUXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQTBDO0FBRW5DLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxRQUE2QixFQUFFLEVBQUUsQ0FDdkUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBcUIsQ0FBQztBQUQ1RCxRQUFBLHNCQUFzQiwwQkFDc0M7QUFFekUsTUFBYSxLQUFLO0lBQ0UsUUFBUSxHQUFtQixFQUFFLENBQUM7SUFDakQsWUFBWSxHQUFHLFFBQTZCO1FBQzNDLElBQUksUUFBUSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1NBQzdCO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksV0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztJQUVTLFVBQVUsQ0FBQyxHQUFHLFFBQTZCO1FBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNqQixHQUFHLElBQUEsOEJBQXNCLEVBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkQsUUFBUSxPQUFPLE9BQU8sRUFBRTtnQkFDdkIsS0FBSyxRQUFRLENBQUM7Z0JBQ2QsS0FBSyxRQUFRO29CQUNaLE9BQU8sSUFBSSx1QkFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUVoQztvQkFDQyxPQUFPLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksdUJBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2FBQzFEO1FBQ0YsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNILENBQUM7Q0FDRDtBQXJDRCxzQkFxQ0MiLCJmaWxlIjoiY29yZS9RdWVyeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElRdWVyeSwgUXVlcnlQYXJhbWV0ZXIsIFF1ZXJ5U2VnbWVudCwgUmF3UXVlcnlQYXJhbWV0ZXIgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBSYXdTZWdtZW50IH0gZnJvbSAnLi9SYXdTZWdtZW50JztcblxuZXhwb3J0IGNvbnN0IGZpbHRlck91dEVtcHR5U2VnbWVudHMgPSAoc2VnbWVudHM6IFJhd1F1ZXJ5UGFyYW1ldGVyW10pID0+XG5cdHNlZ21lbnRzLmZpbHRlcigoc2VnbWVudCkgPT4gc2VnbWVudCAhPT0gdW5kZWZpbmVkKSBhcyBRdWVyeVBhcmFtZXRlcltdO1xuXG5leHBvcnQgY2xhc3MgUXVlcnkgaW1wbGVtZW50cyBJUXVlcnkge1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgc2VnbWVudHM6IFF1ZXJ5U2VnbWVudFtdID0gW107XG5cdGNvbnN0cnVjdG9yKC4uLnNlZ21lbnRzOiBSYXdRdWVyeVBhcmFtZXRlcltdKSB7XG5cdFx0aWYgKHNlZ21lbnRzKSB7XG5cdFx0XHR0aGlzLmFkZFNlZ21lbnQoLi4uc2VnbWVudHMpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHF1ZXJ5IHNlZ21lbnRzIG51bWJlclxuXHQgKi9cblx0cHVibGljIHNpemUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0U2VnbWVudHMoKS5sZW5ndGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBmaW5hbCBxdWVyeSB0aGF0IG1heSBiZSBwcmVwcm9jZXNzZWRcblx0ICogUmV0dXJuZWQgcXVlcnkgd2lsbCBiZSB1c2VkIHdoaWxlIGNvbXBpbGUgU1FMXG5cdCAqL1xuXHRwdWJsaWMgZ2V0U2VnbWVudHMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2VnbWVudHM7XG5cdH1cblxuXHRwcm90ZWN0ZWQgYWRkU2VnbWVudCguLi5zZWdtZW50czogUmF3UXVlcnlQYXJhbWV0ZXJbXSkge1xuXHRcdHRoaXMuc2VnbWVudHMucHVzaChcblx0XHRcdC4uLmZpbHRlck91dEVtcHR5U2VnbWVudHMoc2VnbWVudHMpLm1hcCgoc2VnbWVudCkgPT4ge1xuXHRcdFx0XHRzd2l0Y2ggKHR5cGVvZiBzZWdtZW50KSB7XG5cdFx0XHRcdFx0Y2FzZSAnc3RyaW5nJzpcblx0XHRcdFx0XHRjYXNlICdudW1iZXInOlxuXHRcdFx0XHRcdFx0cmV0dXJuIG5ldyBSYXdTZWdtZW50KHNlZ21lbnQpO1xuXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHJldHVybiBzZWdtZW50ID09PSBudWxsID8gbmV3IFJhd1NlZ21lbnQobnVsbCkgOiBzZWdtZW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHQpO1xuXHR9XG59XG4iXX0=