Initial commit
This commit is contained in:
80
node_modules/knex/lib/dialects/sqlite3/schema/sqlite-compiler.js
generated
vendored
Executable file
80
node_modules/knex/lib/dialects/sqlite3/schema/sqlite-compiler.js
generated
vendored
Executable file
@@ -0,0 +1,80 @@
|
||||
// SQLite3: Column Builder & Compiler
|
||||
// -------
|
||||
const SchemaCompiler = require('../../../schema/compiler');
|
||||
|
||||
const some = require('lodash/some');
|
||||
|
||||
// Schema Compiler
|
||||
// -------
|
||||
|
||||
class SchemaCompiler_SQLite3 extends SchemaCompiler {
|
||||
constructor(client, builder) {
|
||||
super(client, builder);
|
||||
}
|
||||
|
||||
// Compile the query to determine if a table exists.
|
||||
hasTable(tableName) {
|
||||
const sql =
|
||||
`select * from sqlite_master ` +
|
||||
`where type = 'table' and name = ${this.client.parameter(
|
||||
this.formatter.wrap(tableName).replace(/`/g, ''),
|
||||
this.builder,
|
||||
this.bindingsHolder
|
||||
)}`;
|
||||
this.pushQuery({ sql, output: (resp) => resp.length > 0 });
|
||||
}
|
||||
|
||||
// Compile the query to determine if a column exists.
|
||||
hasColumn(tableName, column) {
|
||||
this.pushQuery({
|
||||
sql: `PRAGMA table_info(${this.formatter.wrap(tableName)})`,
|
||||
output(resp) {
|
||||
return some(resp, (col) => {
|
||||
return (
|
||||
this.client.wrapIdentifier(col.name.toLowerCase()) ===
|
||||
this.client.wrapIdentifier(column.toLowerCase())
|
||||
);
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
// Compile a rename table command.
|
||||
renameTable(from, to) {
|
||||
this.pushQuery(
|
||||
`alter table ${this.formatter.wrap(from)} rename to ${this.formatter.wrap(
|
||||
to
|
||||
)}`
|
||||
);
|
||||
}
|
||||
|
||||
async generateDdlCommands() {
|
||||
const sequence = this.builder._sequence;
|
||||
for (let i = 0, l = sequence.length; i < l; i++) {
|
||||
const query = sequence[i];
|
||||
this[query.method].apply(this, query.args);
|
||||
}
|
||||
|
||||
const commandSources = this.sequence;
|
||||
|
||||
if (commandSources.length === 1 && commandSources[0].statementsProducer) {
|
||||
return commandSources[0].statementsProducer();
|
||||
} else {
|
||||
const result = [];
|
||||
|
||||
for (const commandSource of commandSources) {
|
||||
const command = commandSource.sql;
|
||||
|
||||
if (Array.isArray(command)) {
|
||||
result.push(...command);
|
||||
} else {
|
||||
result.push(command);
|
||||
}
|
||||
}
|
||||
|
||||
return { pre: [], sql: result, check: null, post: [] };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = SchemaCompiler_SQLite3;
|
||||
Reference in New Issue
Block a user