@jakub.knejzlik/ts-query
Version:
TypeScript implementation of SQL builder
48 lines (47 loc) • 1.6 kB
JavaScript
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;
;