UNPKG

@sqb/builder

Version:

Extensible multi-dialect SQL query builder written with TypeScript

42 lines (41 loc) 1.52 kB
"use strict"; 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 { _params; 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 });