UNPKG

@sqb/builder

Version:

Extensible multi-dialect SQL query builder written with TypeScript

47 lines (46 loc) 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CoalesceStatement = void 0; const enums_js_1 = require("../enums.js"); const serializable_js_1 = require("../serializable.js"); class CoalesceStatement extends serializable_js_1.Serializable { constructor(...expressions) { super(); this._expressions = expressions; } get _type() { return enums_js_1.SerializationType.COALESCE_STATEMENT; } /** * Sets alias to case expression. */ as(alias) { this._alias = alias; return this; } /** * Performs serialization * * @param {Object} ctx * @return {string} * @override */ _serialize(ctx) { if (!this._expressions.length) return ''; const q = { expressions: [], }; for (const x of this._expressions) { q.expressions.push(ctx.anyToSQL(x)); } return ctx.serialize(this._type, q, () => this.__defaultSerialize(ctx, q)); } __defaultSerialize(ctx, o) { return ('coalesce(' + o.expressions.join(', ') + ')' + (this._alias ? ' ' + this._alias : '')); } } exports.CoalesceStatement = CoalesceStatement;