From fa70d7d1bd4d6d927eb3b3734503b602c2d436b4 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Sun, 7 Nov 2021 11:20:51 +0100 Subject: [PATCH] db diff sort --- packages/tools/src/computeDiffRows.ts | 34 +++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/tools/src/computeDiffRows.ts b/packages/tools/src/computeDiffRows.ts index 4e48c0848..9f68b6b39 100644 --- a/packages/tools/src/computeDiffRows.ts +++ b/packages/tools/src/computeDiffRows.ts @@ -1,5 +1,6 @@ import { DbDiffOptions, testEqualColumns, testEqualTables, testEqualSqlObjects } from './diffTools'; import { DatabaseInfo, EngineDriver, SqlObjectInfo, TableInfo } from 'dbgate-types'; +import _ from 'lodash'; export function computeDiffRowsCore(sourceList, targetList, testEqual) { const res = []; @@ -75,21 +76,24 @@ export function computeDbDiffRows( for (const objectTypeField of ['tables', 'views', 'procedures', 'matviews', 'functions']) { const defs = COMPARE_DEFS[objectTypeField]; res.push( - ...computeDiffRowsCore(sourceDb[objectTypeField], targetDb[objectTypeField], (a, b) => - defs.test(a, b, opts, targetDb, driver) - ).map(row => ({ - ...row, - sourceSchemaName: row?.source?.schemaName, - sourcePureName: row?.source?.pureName, - targetSchemaName: row?.target?.schemaName, - targetPureName: row?.target?.pureName, - typeName: defs.name, - typeIcon: defs.icon, - identifier: `${row?.source?.schemaName || row?.target?.schemaName}.${ - row?.source?.pureName || row?.target?.pureName - }`, - objectTypeField, - })) + ..._.sortBy( + computeDiffRowsCore(sourceDb[objectTypeField], targetDb[objectTypeField], (a, b) => + defs.test(a, b, opts, targetDb, driver) + ).map(row => ({ + ...row, + sourceSchemaName: row?.source?.schemaName, + sourcePureName: row?.source?.pureName, + targetSchemaName: row?.target?.schemaName, + targetPureName: row?.target?.pureName, + typeName: defs.name, + typeIcon: defs.icon, + identifier: `${row?.source?.schemaName || row?.target?.schemaName}.${ + row?.source?.pureName || row?.target?.pureName + }`, + objectTypeField, + })), + 'identifier' + ) ); } return res;