db diff sort

This commit is contained in:
Jan Prochazka
2021-11-07 11:20:51 +01:00
parent 73b338d38a
commit fa70d7d1bd

View File

@@ -1,5 +1,6 @@
import { DbDiffOptions, testEqualColumns, testEqualTables, testEqualSqlObjects } from './diffTools'; import { DbDiffOptions, testEqualColumns, testEqualTables, testEqualSqlObjects } from './diffTools';
import { DatabaseInfo, EngineDriver, SqlObjectInfo, TableInfo } from 'dbgate-types'; import { DatabaseInfo, EngineDriver, SqlObjectInfo, TableInfo } from 'dbgate-types';
import _ from 'lodash';
export function computeDiffRowsCore(sourceList, targetList, testEqual) { export function computeDiffRowsCore(sourceList, targetList, testEqual) {
const res = []; const res = [];
@@ -75,21 +76,24 @@ export function computeDbDiffRows(
for (const objectTypeField of ['tables', 'views', 'procedures', 'matviews', 'functions']) { for (const objectTypeField of ['tables', 'views', 'procedures', 'matviews', 'functions']) {
const defs = COMPARE_DEFS[objectTypeField]; const defs = COMPARE_DEFS[objectTypeField];
res.push( res.push(
...computeDiffRowsCore(sourceDb[objectTypeField], targetDb[objectTypeField], (a, b) => ..._.sortBy(
defs.test(a, b, opts, targetDb, driver) computeDiffRowsCore(sourceDb[objectTypeField], targetDb[objectTypeField], (a, b) =>
).map(row => ({ defs.test(a, b, opts, targetDb, driver)
...row, ).map(row => ({
sourceSchemaName: row?.source?.schemaName, ...row,
sourcePureName: row?.source?.pureName, sourceSchemaName: row?.source?.schemaName,
targetSchemaName: row?.target?.schemaName, sourcePureName: row?.source?.pureName,
targetPureName: row?.target?.pureName, targetSchemaName: row?.target?.schemaName,
typeName: defs.name, targetPureName: row?.target?.pureName,
typeIcon: defs.icon, typeName: defs.name,
identifier: `${row?.source?.schemaName || row?.target?.schemaName}.${ typeIcon: defs.icon,
row?.source?.pureName || row?.target?.pureName identifier: `${row?.source?.schemaName || row?.target?.schemaName}.${
}`, row?.source?.pureName || row?.target?.pureName
objectTypeField, }`,
})) objectTypeField,
})),
'identifier'
)
); );
} }
return res; return res;