mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 03:16:01 +00:00
SYNC: call adapt db info
This commit is contained in:
@@ -4,7 +4,7 @@ const { testWrapper } = require('../tools');
|
|||||||
const dataReplicator = require('dbgate-api/src/shell/dataReplicator');
|
const dataReplicator = require('dbgate-api/src/shell/dataReplicator');
|
||||||
const deployDb = require('dbgate-api/src/shell/deployDb');
|
const deployDb = require('dbgate-api/src/shell/deployDb');
|
||||||
const storageModel = require('dbgate-api/src/storageModel');
|
const storageModel = require('dbgate-api/src/storageModel');
|
||||||
const { runCommandOnDriver, runQueryOnDriver } = require('dbgate-tools');
|
const { runCommandOnDriver, runQueryOnDriver, adaptDatabaseInfo } = require('dbgate-tools');
|
||||||
|
|
||||||
describe('Data replicator', () => {
|
describe('Data replicator', () => {
|
||||||
test.each(engines.filter(x => !x.skipDataReplicator).map(engine => [engine.label, engine]))(
|
test.each(engines.filter(x => !x.skipDataReplicator).map(engine => [engine.label, engine]))(
|
||||||
@@ -162,7 +162,7 @@ describe('Data replicator', () => {
|
|||||||
await deployDb({
|
await deployDb({
|
||||||
systemConnection: conn,
|
systemConnection: conn,
|
||||||
driver,
|
driver,
|
||||||
loadedDbModel: storageModel,
|
loadedDbModel: adaptDatabaseInfo(storageModel, driver),
|
||||||
targetSchema: engine.defaultSchemaName,
|
targetSchema: engine.defaultSchemaName,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -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.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 {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 {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 {function[]} options.modelTransforms - array of functions for transforming model
|
||||||
* @param {object} options.dbdiffOptionsExtra - extra options for dbdiff
|
* @param {object} options.dbdiffOptionsExtra - extra options for dbdiff
|
||||||
* @param {string} options.ignoreNameRegex - regex for ignoring objects by name
|
* @param {string} options.ignoreNameRegex - regex for ignoring objects by name
|
||||||
|
|||||||
@@ -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.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 {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 {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 {function[]} options.modelTransforms - array of functions for transforming model
|
||||||
* @param {object} options.dbdiffOptionsExtra - extra options for dbdiff
|
* @param {object} options.dbdiffOptionsExtra - extra options for dbdiff
|
||||||
* @param {string} options.ignoreNameRegex - regex for ignoring objects by name
|
* @param {string} options.ignoreNameRegex - regex for ignoring objects by name
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ const fs = require('fs-extra');
|
|||||||
const executeQuery = require('./executeQuery');
|
const executeQuery = require('./executeQuery');
|
||||||
const { connectUtility } = require('../utility/connectUtility');
|
const { connectUtility } = require('../utility/connectUtility');
|
||||||
const requireEngineDriver = require('../utility/requireEngineDriver');
|
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 importDbModel = require('../utility/importDbModel');
|
||||||
const jsonLinesReader = require('./jsonLinesReader');
|
const jsonLinesReader = require('./jsonLinesReader');
|
||||||
const tableWriter = require('./tableWriter');
|
const tableWriter = require('./tableWriter');
|
||||||
@@ -26,10 +26,7 @@ async function importDbFromFolder({ connection, systemConnection, driver, folder
|
|||||||
if (driver?.databaseEngineTypes?.includes('sql')) {
|
if (driver?.databaseEngineTypes?.includes('sql')) {
|
||||||
const model = await importDbModel(folder);
|
const model = await importDbModel(folder);
|
||||||
|
|
||||||
let modelAdapted = {
|
let modelAdapted = adaptDatabaseInfo(model, driver);
|
||||||
...model,
|
|
||||||
tables: model.tables.map(table => driver.adaptTableInfo(table)),
|
|
||||||
};
|
|
||||||
for (const transform of modelTransforms || []) {
|
for (const transform of modelTransforms || []) {
|
||||||
modelAdapted = transform(modelAdapted);
|
modelAdapted = transform(modelAdapted);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import type {
|
|||||||
ViewInfo,
|
ViewInfo,
|
||||||
CollectionInfo,
|
CollectionInfo,
|
||||||
NamedObjectInfo,
|
NamedObjectInfo,
|
||||||
|
EngineDriver,
|
||||||
} from 'dbgate-types';
|
} from 'dbgate-types';
|
||||||
import _flatten from 'lodash/flatten';
|
import _flatten from 'lodash/flatten';
|
||||||
import _uniq from 'lodash/uniq';
|
import _uniq from 'lodash/uniq';
|
||||||
@@ -304,3 +305,11 @@ export function skipDbGateInternalObjects(db: DatabaseInfo) {
|
|||||||
tables: (db.tables || []).filter(tbl => tbl.pureName != 'dbgate_deploy_journal'),
|
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;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user