UNPKG

nano-queries

Version:

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

61 lines (59 loc) 6.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SelectStatement = void 0; const Query_1 = require("../core/Query"); const QueryBuilder_1 = require("../QueryBuilder"); const LimitClause_1 = require("./LimitClause"); const SetExpression_1 = require("./SetExpression"); const WhereClause_1 = require("./WhereClause"); class SelectStatement extends Query_1.Query { _select; _from; _limit; _where; constructor(...select) { super(); this._select = select; this._from = []; this._limit = {}; this._where = new WhereClause_1.WhereClause(); } select(...params) { this._select.push(...params); return this; } from(...params) { this._from.push(...params); return this; } offset(offset) { this._limit.offset = offset; return this; } limit(limit) { this._limit.limit = limit; return this; } where(param, condition = 'and') { this._where[condition](param); return this; } getSegments() { const query = new QueryBuilder_1.QueryBuilder({ join: ' ' }); query.raw('SELECT'); if (this._select.length > 0) { query.raw(new SetExpression_1.SetExpression(...this._select)); } else { query.raw('*'); } if (this._from.length === 0) throw TypeError('Not set FROM clause'); query.raw('FROM', ...this._from); query.raw(this._where); query.raw(new LimitClause_1.LimitClause(this._limit)); return query.getSegments(); } } exports.SelectStatement = SelectStatement; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNxbC9TZWxlY3RTdGF0ZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXNDO0FBQ3RDLGtEQUErQztBQUUvQywrQ0FBNEM7QUFDNUMsbURBQWdEO0FBQ2hELCtDQUE0QztBQUk1QyxNQUFhLGVBQWdCLFNBQVEsYUFBSztJQUN4QixPQUFPLENBQW1CO0lBQzFCLEtBQUssQ0FBbUI7SUFDeEIsTUFBTSxDQUFzQztJQUM1QyxNQUFNLENBQUM7SUFFeEIsWUFBWSxHQUFHLE1BQThCO1FBQzVDLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLHlCQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsTUFBd0I7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFTSxJQUFJLENBQUMsR0FBRyxNQUF3QjtRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFlO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBYztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQXdCLEVBQUUsWUFBMEIsS0FBSztRQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVNLFdBQVc7UUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSwyQkFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFOUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1QixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksNkJBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQzlDO2FBQU07WUFDTixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2Y7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXZCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXhDLE9BQU8sS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUM7Q0FDRDtBQTdERCwwQ0E2REMiLCJmaWxlIjoic3FsL1NlbGVjdFN0YXRlbWVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnLi4vY29yZS9RdWVyeSc7XG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXIgfSBmcm9tICcuLi9RdWVyeUJ1aWxkZXInO1xuaW1wb3J0IHsgSVF1ZXJ5LCBRdWVyeVBhcmFtZXRlciwgUXVlcnlTZWdtZW50LCBSYXdRdWVyeVBhcmFtZXRlciB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IExpbWl0Q2xhdXNlIH0gZnJvbSAnLi9MaW1pdENsYXVzZSc7XG5pbXBvcnQgeyBTZXRFeHByZXNzaW9uIH0gZnJvbSAnLi9TZXRFeHByZXNzaW9uJztcbmltcG9ydCB7IFdoZXJlQ2xhdXNlIH0gZnJvbSAnLi9XaGVyZUNsYXVzZSc7XG5cbmV4cG9ydCB0eXBlIFNlbGVjdFN0YXRlbWVudE9wdGlvbnMgPSBRdWVyeVBhcmFtZXRlcltdO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0U3RhdGVtZW50IGV4dGVuZHMgUXVlcnkgaW1wbGVtZW50cyBJUXVlcnkge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3Q6IFF1ZXJ5UGFyYW1ldGVyW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX2Zyb206IFF1ZXJ5UGFyYW1ldGVyW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX2xpbWl0OiB7IGxpbWl0PzogbnVtYmVyOyBvZmZzZXQ/OiBudW1iZXIgfTtcblx0cHJpdmF0ZSByZWFkb25seSBfd2hlcmU7XG5cblx0Y29uc3RydWN0b3IoLi4uc2VsZWN0OiBTZWxlY3RTdGF0ZW1lbnRPcHRpb25zKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMuX3NlbGVjdCA9IHNlbGVjdDtcblx0XHR0aGlzLl9mcm9tID0gW107XG5cdFx0dGhpcy5fbGltaXQgPSB7fTtcblxuXHRcdHRoaXMuX3doZXJlID0gbmV3IFdoZXJlQ2xhdXNlKCk7XG5cdH1cblxuXHRwdWJsaWMgc2VsZWN0KC4uLnBhcmFtczogUXVlcnlQYXJhbWV0ZXJbXSkge1xuXHRcdHRoaXMuX3NlbGVjdC5wdXNoKC4uLnBhcmFtcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZnJvbSguLi5wYXJhbXM6IFF1ZXJ5UGFyYW1ldGVyW10pIHtcblx0XHR0aGlzLl9mcm9tLnB1c2goLi4ucGFyYW1zKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBvZmZzZXQob2Zmc2V0PzogbnVtYmVyKSB7XG5cdFx0dGhpcy5fbGltaXQub2Zmc2V0ID0gb2Zmc2V0O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGxpbWl0KGxpbWl0PzogbnVtYmVyKSB7XG5cdFx0dGhpcy5fbGltaXQubGltaXQgPSBsaW1pdDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyB3aGVyZShwYXJhbTogUmF3UXVlcnlQYXJhbWV0ZXIsIGNvbmRpdGlvbjogJ2FuZCcgfCAnb3InID0gJ2FuZCcpIHtcblx0XHR0aGlzLl93aGVyZVtjb25kaXRpb25dKHBhcmFtKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBnZXRTZWdtZW50cygpOiBRdWVyeVNlZ21lbnRbXSB7XG5cdFx0Y29uc3QgcXVlcnkgPSBuZXcgUXVlcnlCdWlsZGVyKHsgam9pbjogJyAnIH0pO1xuXG5cdFx0cXVlcnkucmF3KCdTRUxFQ1QnKTtcblxuXHRcdGlmICh0aGlzLl9zZWxlY3QubGVuZ3RoID4gMCkge1xuXHRcdFx0cXVlcnkucmF3KG5ldyBTZXRFeHByZXNzaW9uKC4uLnRoaXMuX3NlbGVjdCkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWVyeS5yYXcoJyonKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fZnJvbS5sZW5ndGggPT09IDApIHRocm93IFR5cGVFcnJvcignTm90IHNldCBGUk9NIGNsYXVzZScpO1xuXHRcdHF1ZXJ5LnJhdygnRlJPTScsIC4uLnRoaXMuX2Zyb20pO1xuXG5cdFx0cXVlcnkucmF3KHRoaXMuX3doZXJlKTtcblxuXHRcdHF1ZXJ5LnJhdyhuZXcgTGltaXRDbGF1c2UodGhpcy5fbGltaXQpKTtcblxuXHRcdHJldHVybiBxdWVyeS5nZXRTZWdtZW50cygpO1xuXHR9XG59XG4iXX0=