@sqb/builder
Version:
Extensible multi-dialect SQL query builder written with TypeScript
41 lines (40 loc) • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Query = void 0;
const tslib_1 = require("tslib");
const events_1 = require("events");
const putil_flattentext_1 = tslib_1.__importDefault(require("putil-flattentext"));
const putil_merge_1 = tslib_1.__importDefault(require("putil-merge"));
const serializable_js_1 = require("../serializable.js");
const serialize_context_js_1 = require("../serialize-context.js");
class Query extends serializable_js_1.Serializable {
constructor() {
super();
events_1.EventEmitter.call(this);
}
/**
* Generates Sql script
*/
generate(options) {
const ctx = new serialize_context_js_1.SerializeContext(options);
if (this._params)
ctx.params = { ...ctx.params, ...this._params };
ctx.serializeHooks = this.listeners('serialize');
/* generate output */
const sql = this._serialize(ctx);
return {
sql: (0, putil_flattentext_1.default)(sql, { noWrap: !ctx.prettyPrint }),
params: ctx.preparedParams,
paramOptions: ctx.paramOptions,
returningFields: ctx.returningFields,
};
}
values(obj) {
if (typeof obj !== 'object' || Array.isArray(obj))
throw new TypeError('Invalid argument');
this._params = obj;
return this;
}
}
exports.Query = Query;
(0, putil_merge_1.default)(Query.prototype, events_1.EventEmitter.prototype, { descriptor: true });