@sqb/builder
Version:
Extensible multi-dialect SQL query builder written with TypeScript
29 lines (28 loc) • 800 B
JavaScript
import { SerializationType } from '../enums.js';
import { Query } from './query.js';
export class UnionQuery extends Query {
_queries;
_unionType;
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');
}
}