UNPKG

@jakub.knejzlik/ts-query

Version:

TypeScript implementation of SQL builder

48 lines (47 loc) 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateViewAsSelect = void 0; const Query_1 = require("./Query"); const mysql_1 = require("./flavors/mysql"); const interfaces_1 = require("./interfaces"); class CreateViewAsSelect { constructor(_viewName, _select, _orReplace = false) { this._viewName = _viewName; this._select = _select; this._orReplace = _orReplace; } clone() { return new this.constructor(this._viewName, this._select.clone(), this._orReplace); } getOperationType() { return interfaces_1.MetadataOperationType.CREATE_VIEW_AS; } getTableNames() { return [this._viewName, ...this._select.getTableNames()]; } toSQL(flavor = new mysql_1.MySQLFlavor()) { const orReplaceStr = this._orReplace ? "OR REPLACE " : ""; return `CREATE ${orReplaceStr}VIEW ${flavor.escapeTable(this._viewName)} AS ${this._select.toSQL(flavor)}`; } serialize() { return JSON.stringify(this.toJSON()); } toJSON() { return { type: interfaces_1.OperationType.CREATE_VIEW_AS, select: this._select.toJSON(), viewName: this._viewName, orReplace: this._orReplace, }; } static fromJSON({ viewName, select, orReplace }) { return new CreateViewAsSelect(viewName, Query_1.SelectQuery.fromJSON(select), orReplace); } getViewName() { return this._viewName; } getSelect() { return this._select; } } exports.CreateViewAsSelect = CreateViewAsSelect;