@sqb/builder
Version:
Extensible multi-dialect SQL query builder written with TypeScript
42 lines (41 loc) • 1.24 kB
JavaScript
import { SerializationType } from '../enums.js';
import { printArray } from '../helpers.js';
import { ReturningColumn } from '../sql-objects/returning-column.js';
import { Query } from './query.js';
export class ReturningQuery extends Query {
/**
*
*/
returning(...columns) {
if (!columns)
return this;
// noinspection JSMismatchedCollectionQueryUpdate
this._returningColumns = columns.length
? columns.reduce((a, v) => {
if (v)
a.push(new ReturningColumn(v));
return a;
}, [])
: undefined;
return this;
}
/**
*
*/
__serializeReturning(ctx) {
if (!(this._returningColumns && this._returningColumns.length))
return '';
const arr = [];
ctx.returningFields = [];
for (const t of this._returningColumns) {
const s = t._serialize(ctx);
/* istanbul ignore else */
if (s)
arr.push(s);
}
return ctx.serialize(SerializationType.RETURNING_BLOCK, arr, () => {
const s = printArray(arr);
return s ? 'returning ' + s : '';
});
}
}