UNPKG

@sqb/builder

Version:

Extensible multi-dialect SQL query builder written with TypeScript

43 lines (42 loc) 1.26 kB
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 { _returningColumns; /** * */ 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 : ''; }); } }