@sqb/builder
Version:
Extensible multi-dialect SQL query builder written with TypeScript
43 lines (42 loc) • 1.09 kB
JavaScript
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 : ''));
}
}