#451 loading fks on postgres cleanup & fix

This commit is contained in:
Jan Prochazka
2023-01-06 18:40:47 +01:00
parent 37eeaf0cce
commit b06d747399
2 changed files with 53 additions and 56 deletions

View File

@@ -170,9 +170,9 @@ export class DatabaseAnalyser {
// return this.structure.tables.find((x) => x.objectId == id); // return this.structure.tables.find((x) => x.objectId == id);
// } // }
containsObjectIdCondition(typeFields) { // containsObjectIdCondition(typeFields) {
return this.createQueryCore('=OBJECT_ID_CONDITION', typeFields) != ' is not null'; // return this.createQueryCore('=OBJECT_ID_CONDITION', typeFields) != ' is not null';
} // }
createQuery(template, typeFields) { createQuery(template, typeFields) {
return this.createQueryCore(template, typeFields); return this.createQueryCore(template, typeFields);

View File

@@ -57,8 +57,8 @@ class Analyser extends DatabaseAnalyser {
createQuery(resFileName, typeFields) { createQuery(resFileName, typeFields) {
const query = super.createQuery(sql[resFileName], typeFields); const query = super.createQuery(sql[resFileName], typeFields);
if (query) return query.replace('#REFTABLECOND#', this.driver.__analyserInternals.refTableCond); // if (query) return query.replace('#REFTABLECOND#', this.driver.__analyserInternals.refTableCond);
return null; return query;
} }
async _computeSingleObjectId() { async _computeSingleObjectId() {
@@ -80,15 +80,12 @@ class Analyser extends DatabaseAnalyser {
let fkColumns = null; let fkColumns = null;
// if (true) { // if (true) {
if (this.containsObjectIdCondition(['tables']) || this.driver.__analyserInternals.refTableCond) { // if (this.containsObjectIdCondition(['tables']) || this.driver.__analyserInternals.refTableCond) {
this.feedback({ analysingMessage: 'Loading foreign keys' }); // this.feedback({ analysingMessage: 'Loading foreign keys' });
fkColumns = await this.driver.query(this.pool, this.createQuery('foreignKeys', ['tables'])); // fkColumns = await this.driver.query(this.pool, this.createQuery('foreignKeys', ['tables']));
} else { // } else {
this.feedback({ analysingMessage: 'Loading foreign key constraints' }); this.feedback({ analysingMessage: 'Loading foreign key constraints' });
const fk_tableConstraints = await this.driver.query( const fk_tableConstraints = await this.driver.query(this.pool, this.createQuery('fk_tableConstraints', ['tables']));
this.pool,
this.createQuery('fk_tableConstraints', ['tables'])
);
this.feedback({ analysingMessage: 'Loading foreign key refs' }); this.feedback({ analysingMessage: 'Loading foreign key refs' });
const fk_referentialConstraints = await this.driver.query( const fk_referentialConstraints = await this.driver.query(
@@ -100,11 +97,11 @@ class Analyser extends DatabaseAnalyser {
const fk_keyColumnUsage = await this.driver.query(this.pool, this.createQuery('fk_keyColumnUsage', ['tables'])); const fk_keyColumnUsage = await this.driver.query(this.pool, this.createQuery('fk_keyColumnUsage', ['tables']));
const cntKey = x => `${x.constraint_name}|${x.constraint_schema}`; const cntKey = x => `${x.constraint_name}|${x.constraint_schema}`;
const rows = []; const fkRows = [];
const constraintDct = _.keyBy(fk_tableConstraints.rows, cntKey); const fkConstraintDct = _.keyBy(fk_tableConstraints.rows, cntKey);
for (const fkRef of fk_referentialConstraints.rows) { for (const fkRef of fk_referentialConstraints.rows) {
const cntBase = constraintDct[cntKey(fkRef)]; const cntBase = fkConstraintDct[cntKey(fkRef)];
const cntRef = constraintDct[`${fkRef.unique_constraint_name}|${fkRef.unique_constraint_schema}`]; const cntRef = fkConstraintDct[`${fkRef.unique_constraint_name}|${fkRef.unique_constraint_schema}`];
if (!cntBase || !cntRef) continue; if (!cntBase || !cntRef) continue;
const baseCols = _.sortBy( const baseCols = _.sortBy(
fk_keyColumnUsage.rows.filter( fk_keyColumnUsage.rows.filter(
@@ -124,7 +121,7 @@ class Analyser extends DatabaseAnalyser {
const baseCol = baseCols[i]; const baseCol = baseCols[i];
const refCol = refCols[i]; const refCol = refCols[i];
rows.push({ fkRows.push({
...fkRef, ...fkRef,
pure_name: cntBase.table_name, pure_name: cntBase.table_name,
schema_name: cntBase.table_schema, schema_name: cntBase.table_schema,
@@ -135,8 +132,8 @@ class Analyser extends DatabaseAnalyser {
}); });
} }
} }
fkColumns = { rows }; fkColumns = { rows: fkRows };
} // }
this.feedback({ analysingMessage: 'Loading views' }); this.feedback({ analysingMessage: 'Loading views' });
const views = await this.driver.query(this.pool, this.createQuery('views', ['views'])); const views = await this.driver.query(this.pool, this.createQuery('views', ['views']));