knex/lib/dialects/sqlite3/schema/sqlite-viewcompiler.js
Marek Brenčič 3f0ec9f84e
Fix for createViewOrReplace and its support for sqlite3 (#4856)
Co-authored-by: Marek "foxie" Brenčič <marek@brencic.sk>
Co-authored-by: Olivier Cavadenti <olivier.cavadenti@gmail.com>
2022-01-14 11:15:03 +02:00

41 lines
935 B
JavaScript

/* eslint max-len: 0 */
const ViewCompiler = require('../../../schema/viewcompiler.js');
const {
columnize: columnize_,
} = require('../../../formatter/wrappingFormatter');
class ViewCompiler_SQLite3 extends ViewCompiler {
constructor(client, viewCompiler) {
super(client, viewCompiler);
}
createOrReplace() {
const columns = this.columns;
const selectQuery = this.selectQuery.toString();
const viewName = this.viewName();
const columnList = columns
? ' (' +
columnize_(
columns,
this.viewBuilder,
this.client,
this.bindingsHolder
) +
')'
: '';
const dropSql = `drop view if exists ${viewName}`;
const createSql = `create view ${viewName}${columnList} as ${selectQuery}`;
this.pushQuery({
sql: dropSql,
});
this.pushQuery({
sql: createSql,
});
}
}
module.exports = ViewCompiler_SQLite3;