postgre, mysql uniques, recreate table WIP, drop index works

This commit is contained in:
Jan Prochazka
2021-09-04 18:43:59 +02:00
parent b3b7d021c5
commit 04a6540890
15 changed files with 113 additions and 27 deletions

View File

@@ -75,6 +75,7 @@ class Analyser extends DatabaseAnalyser {
const viewTexts = await this.getViewTexts(views.rows.map(x => x.pureName));
const indexes = await this.driver.query(this.pool, this.createQuery('indexes', ['tables']));
const uniqueNames = await this.driver.query(this.pool, this.createQuery('uniqueNames', ['tables']));
return {
tables: tables.rows.map(table => ({
@@ -84,9 +85,11 @@ class Analyser extends DatabaseAnalyser {
columns: columns.rows.filter(col => col.pureName == table.pureName).map(getColumnInfo),
primaryKey: DatabaseAnalyser.extractPrimaryKeys(table, pkColumns.rows),
foreignKeys: DatabaseAnalyser.extractForeignKeys(table, fkColumns.rows),
uniques: [],
indexes: _.uniqBy(
indexes.rows.filter(idx => idx.tableName == table.pureName),
indexes.rows.filter(
idx =>
idx.tableName == table.pureName && !uniqueNames.rows.find(x => x.constraintName == idx.constraintName)
),
'constraintName'
).map(idx => ({
..._.pick(idx, ['constraintName', 'indexType']),
@@ -97,6 +100,21 @@ class Analyser extends DatabaseAnalyser {
..._.pick(col, ['columnName']),
})),
})),
uniques: _.uniqBy(
indexes.rows.filter(
idx =>
idx.tableName == table.pureName && uniqueNames.rows.find(x => x.constraintName == idx.constraintName)
),
'constraintName'
).map(idx => ({
..._.pick(idx, ['constraintName']),
columns: indexes.rows
.filter(col => col.tableName == idx.tableName && col.constraintName == idx.constraintName)
.map(col => ({
..._.pick(col, ['columnName']),
})),
})),
})),
views: views.rows.map(view => ({
...view,

View File

@@ -8,6 +8,7 @@ const indexes = require('./indexes');
const programmables = require('./programmables');
const procedureModifications = require('./procedureModifications');
const functionModifications = require('./functionModifications');
const uniqueNames = require('./uniqueNames');
module.exports = {
columns,
@@ -20,4 +21,5 @@ module.exports = {
procedureModifications,
functionModifications,
indexes,
uniqueNames,
};

View File

@@ -0,0 +1,5 @@
module.exports = `
select CONSTRAINT_NAME as constraintName
from information_schema.TABLE_CONSTRAINTS
where CONSTRAINT_SCHEMA = '#DATABASE#' and constraint_type = 'UNIQUE'
`;

View File

@@ -22,6 +22,7 @@ const dialect = {
dropForeignKey: true,
createPrimaryKey: true,
dropPrimaryKey: true,
dropIndexContainsTableSpec: true,
};
const mysqlDriverBase = {