From ce6d19a77a8990f064f1122da3d18cafd3dbe8d1 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Mon, 30 Jun 2025 08:27:25 +0200 Subject: [PATCH] SYNC: call adapt db info --- integration-tests/__tests__/data-replicator.spec.js | 4 ++-- packages/api/src/shell/deployDb.js | 2 +- packages/api/src/shell/generateDeploySql.js | 2 +- packages/api/src/shell/importDbFromFolder.js | 7 ++----- packages/tools/src/structureTools.ts | 9 +++++++++ 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/integration-tests/__tests__/data-replicator.spec.js b/integration-tests/__tests__/data-replicator.spec.js index ad8151436..d03951f9a 100644 --- a/integration-tests/__tests__/data-replicator.spec.js +++ b/integration-tests/__tests__/data-replicator.spec.js @@ -4,7 +4,7 @@ const { testWrapper } = require('../tools'); const dataReplicator = require('dbgate-api/src/shell/dataReplicator'); const deployDb = require('dbgate-api/src/shell/deployDb'); const storageModel = require('dbgate-api/src/storageModel'); -const { runCommandOnDriver, runQueryOnDriver } = require('dbgate-tools'); +const { runCommandOnDriver, runQueryOnDriver, adaptDatabaseInfo } = require('dbgate-tools'); describe('Data replicator', () => { test.each(engines.filter(x => !x.skipDataReplicator).map(engine => [engine.label, engine]))( @@ -162,7 +162,7 @@ describe('Data replicator', () => { await deployDb({ systemConnection: conn, driver, - loadedDbModel: storageModel, + loadedDbModel: adaptDatabaseInfo(storageModel, driver), targetSchema: engine.defaultSchemaName, }); diff --git a/packages/api/src/shell/deployDb.js b/packages/api/src/shell/deployDb.js index 6fcfd943a..2662e36ba 100644 --- a/packages/api/src/shell/deployDb.js +++ b/packages/api/src/shell/deployDb.js @@ -14,7 +14,7 @@ const crypto = require('crypto'); * @param {object} options.driver - driver object. If not provided, it will be loaded from connection * @param {object} options.analysedStructure - analysed structure of the database. If not provided, it will be loaded * @param {string} options.modelFolder - folder with model files (YAML files for tables, SQL files for views, procedures, ...) - * @param {import('dbgate-tools').DatabaseModelFile[]} options.loadedDbModel - loaded database model - collection of yaml and SQL files loaded into array + * @param {import('dbgate-tools').DatabaseModelFile[] | import('dbgate-types').DatabaseInfo} options.loadedDbModel - loaded database model - collection of yaml and SQL files loaded into array * @param {function[]} options.modelTransforms - array of functions for transforming model * @param {object} options.dbdiffOptionsExtra - extra options for dbdiff * @param {string} options.ignoreNameRegex - regex for ignoring objects by name diff --git a/packages/api/src/shell/generateDeploySql.js b/packages/api/src/shell/generateDeploySql.js index b3e9e4210..920105cc5 100644 --- a/packages/api/src/shell/generateDeploySql.js +++ b/packages/api/src/shell/generateDeploySql.js @@ -23,7 +23,7 @@ const { connectUtility } = require('../utility/connectUtility'); * @param {object} options.driver - driver object. If not provided, it will be loaded from connection * @param {object} options.analysedStructure - analysed structure of the database. If not provided, it will be loaded * @param {string} options.modelFolder - folder with model files (YAML files for tables, SQL files for views, procedures, ...) - * @param {import('dbgate-tools').DatabaseModelFile[]} options.loadedDbModel - loaded database model - collection of yaml and SQL files loaded into array + * @param {import('dbgate-tools').DatabaseModelFile[] | import('dbgate-types').DatabaseInfo} options.loadedDbModel - loaded database model - collection of yaml and SQL files loaded into array * @param {function[]} options.modelTransforms - array of functions for transforming model * @param {object} options.dbdiffOptionsExtra - extra options for dbdiff * @param {string} options.ignoreNameRegex - regex for ignoring objects by name diff --git a/packages/api/src/shell/importDbFromFolder.js b/packages/api/src/shell/importDbFromFolder.js index 73b3c3456..a06faf6ed 100644 --- a/packages/api/src/shell/importDbFromFolder.js +++ b/packages/api/src/shell/importDbFromFolder.js @@ -3,7 +3,7 @@ const fs = require('fs-extra'); const executeQuery = require('./executeQuery'); const { connectUtility } = require('../utility/connectUtility'); const requireEngineDriver = require('../utility/requireEngineDriver'); -const { getAlterDatabaseScript, DatabaseAnalyser, runCommandOnDriver } = require('dbgate-tools'); +const { getAlterDatabaseScript, DatabaseAnalyser, runCommandOnDriver, adaptDatabaseInfo } = require('dbgate-tools'); const importDbModel = require('../utility/importDbModel'); const jsonLinesReader = require('./jsonLinesReader'); const tableWriter = require('./tableWriter'); @@ -26,10 +26,7 @@ async function importDbFromFolder({ connection, systemConnection, driver, folder if (driver?.databaseEngineTypes?.includes('sql')) { const model = await importDbModel(folder); - let modelAdapted = { - ...model, - tables: model.tables.map(table => driver.adaptTableInfo(table)), - }; + let modelAdapted = adaptDatabaseInfo(model, driver); for (const transform of modelTransforms || []) { modelAdapted = transform(modelAdapted); } diff --git a/packages/tools/src/structureTools.ts b/packages/tools/src/structureTools.ts index 342922b71..da7ddea60 100644 --- a/packages/tools/src/structureTools.ts +++ b/packages/tools/src/structureTools.ts @@ -5,6 +5,7 @@ import type { ViewInfo, CollectionInfo, NamedObjectInfo, + EngineDriver, } from 'dbgate-types'; import _flatten from 'lodash/flatten'; import _uniq from 'lodash/uniq'; @@ -304,3 +305,11 @@ export function skipDbGateInternalObjects(db: DatabaseInfo) { tables: (db.tables || []).filter(tbl => tbl.pureName != 'dbgate_deploy_journal'), }; } + +export function adaptDatabaseInfo(db: DatabaseInfo, driver: EngineDriver): DatabaseInfo { + const modelAdapted = { + ...db, + tables: db.tables.map(table => driver.adaptTableInfo(table)), + }; + return modelAdapted; +}