mysql index analysis works

This commit is contained in:
Jan Prochazka
2021-08-19 16:08:27 +02:00
parent c5a3ee01ee
commit 89c904abc1
4 changed files with 30 additions and 2 deletions

View File

@@ -74,6 +74,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']));
return {
tables: tables.rows.map(table => ({
@@ -83,6 +84,19 @@ 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),
'constraintName'
).map(idx => ({
..._.pick(idx, ['constraintName', 'indexType']),
isUnique: !idx.nonUnique,
columns: indexes.rows
.filter(col => col.tableName == idx.tableName && col.constraintName == idx.constraintName)
.map(col => ({
..._.pick(col, ['columnName']),
})),
})),
})),
views: views.rows.map(view => ({
...view,