Initial commit
This commit is contained in:
77
node_modules/knex/lib/migrations/migrate/table-creator.js
generated
vendored
Executable file
77
node_modules/knex/lib/migrations/migrate/table-creator.js
generated
vendored
Executable file
@@ -0,0 +1,77 @@
|
||||
const {
|
||||
getTable,
|
||||
getLockTableName,
|
||||
getLockTableNameWithSchema,
|
||||
getTableName,
|
||||
} = require('./table-resolver');
|
||||
|
||||
function ensureTable(tableName, schemaName, trxOrKnex) {
|
||||
const lockTable = getLockTableName(tableName);
|
||||
return getSchemaBuilder(trxOrKnex, schemaName)
|
||||
.hasTable(tableName)
|
||||
.then((exists) => {
|
||||
return !exists && _createMigrationTable(tableName, schemaName, trxOrKnex);
|
||||
})
|
||||
.then(() => {
|
||||
return getSchemaBuilder(trxOrKnex, schemaName).hasTable(lockTable);
|
||||
})
|
||||
.then((exists) => {
|
||||
return (
|
||||
!exists && _createMigrationLockTable(lockTable, schemaName, trxOrKnex)
|
||||
);
|
||||
})
|
||||
.then(() => {
|
||||
return getTable(trxOrKnex, lockTable, schemaName).select('*');
|
||||
})
|
||||
.then((data) => {
|
||||
return (
|
||||
!data.length && _insertLockRowIfNeeded(tableName, schemaName, trxOrKnex)
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
function _createMigrationTable(tableName, schemaName, trxOrKnex) {
|
||||
return getSchemaBuilder(trxOrKnex, schemaName).createTable(
|
||||
getTableName(tableName),
|
||||
function (t) {
|
||||
t.increments();
|
||||
t.string('name');
|
||||
t.integer('batch');
|
||||
t.timestamp('migration_time');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function _createMigrationLockTable(tableName, schemaName, trxOrKnex) {
|
||||
return getSchemaBuilder(trxOrKnex, schemaName).createTable(
|
||||
tableName,
|
||||
function (t) {
|
||||
t.increments('index').primary();
|
||||
t.integer('is_locked');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function _insertLockRowIfNeeded(tableName, schemaName, trxOrKnex) {
|
||||
const lockTableWithSchema = getLockTableNameWithSchema(tableName, schemaName);
|
||||
return trxOrKnex
|
||||
.select('*')
|
||||
.from(lockTableWithSchema)
|
||||
.then((data) => {
|
||||
return !data.length
|
||||
? trxOrKnex.from(lockTableWithSchema).insert({ is_locked: 0 })
|
||||
: null;
|
||||
});
|
||||
}
|
||||
|
||||
//Get schema-aware schema builder for a given schema nam
|
||||
function getSchemaBuilder(trxOrKnex, schemaName) {
|
||||
return schemaName
|
||||
? trxOrKnex.schema.withSchema(schemaName)
|
||||
: trxOrKnex.schema;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
ensureTable,
|
||||
getSchemaBuilder,
|
||||
};
|
||||
Reference in New Issue
Block a user