@sqb/builder
Version:
Extensible multi-dialect SQL query builder written with TypeScript
27 lines (26 loc) • 918 B
JavaScript
import { SerializationType } from '../enums.js';
import { BaseField } from './base-field.js';
const RETURNING_COLUMN_PATTERN = /^([a-zA-Z_]\w*) *(?:as)? *(\w+)?$/;
export class ReturningColumn extends BaseField {
constructor(field) {
super();
const m = field.match(RETURNING_COLUMN_PATTERN);
if (!m)
throw new TypeError(`"${field}" does not match returning column format`);
this._field = m[1];
this._alias = m[2];
}
get _type() {
return SerializationType.RETURNING_COLUMN;
}
_serialize(ctx) {
const o = {
field: this._field,
alias: this._alias,
};
ctx.returningFields = ctx.returningFields || [];
ctx.returningFields.push(o);
return ctx.serialize(this._type, o, () => ctx.escapeReserved(o.field) +
(o.alias ? ' as ' + ctx.escapeReserved(o.alias) : ''));
}
}