@sqb/builder
Version:
Extensible multi-dialect SQL query builder written with TypeScript
27 lines (26 loc) • 770 B
JavaScript
import { SerializationType } from '../enums.js';
import { Query } from './query.js';
export class UnionQuery extends Query {
constructor(queries, unionType) {
super();
this._queries = queries;
this._unionType = unionType;
}
get _type() {
return SerializationType.UNION_QUERY;
}
/**
* Performs serialization
*/
_serialize(ctx) {
const queries = this._queries.map(q => q._serialize(ctx));
const q = {
queries,
unionType: this._unionType,
};
return ctx.serialize(this._type, q, () => this.__defaultSerialize(ctx, q));
}
__defaultSerialize(ctx, o) {
return o.queries.join(o.unionType === 'all' ? '\nUNION ALL\n' : '\nUNION\n');
}
}