UNPKG

@sqb/builder

Version:

Extensible multi-dialect SQL query builder written with TypeScript

43 lines (42 loc) 1.09 kB
import { SerializationType } from '../enums.js'; import { Serializable } from '../serializable.js'; export class CoalesceStatement extends Serializable { constructor(...expressions) { super(); this._expressions = expressions; } get _type() { return 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 : '')); } }