@sqb/builder
Version:
Extensible multi-dialect SQL query builder written with TypeScript
31 lines (30 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReturningColumn = void 0;
const enums_js_1 = require("../enums.js");
const base_field_js_1 = require("./base-field.js");
const RETURNING_COLUMN_PATTERN = /^([a-zA-Z_]\w*) *(?:as)? *(\w+)?$/;
class ReturningColumn extends base_field_js_1.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 enums_js_1.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) : ''));
}
}
exports.ReturningColumn = ReturningColumn;