mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 03:16:01 +00:00
62 lines
1.9 KiB
JavaScript
62 lines
1.9 KiB
JavaScript
const {
|
|
getAlterDatabaseScript,
|
|
generateDbPairingId,
|
|
matchPairedObjects,
|
|
databaseInfoFromYamlModel,
|
|
extendDatabaseInfo,
|
|
modelCompareDbDiffOptions,
|
|
enrichWithPreloadedRows,
|
|
} = require('dbgate-tools');
|
|
const importDbModel = require('../utility/importDbModel');
|
|
const requireEngineDriver = require('../utility/requireEngineDriver');
|
|
const connectUtility = require('../utility/connectUtility');
|
|
|
|
async function generateDeploySql({
|
|
connection,
|
|
systemConnection = undefined,
|
|
driver = undefined,
|
|
analysedStructure = undefined,
|
|
modelFolder = undefined,
|
|
loadedDbModel = undefined,
|
|
}) {
|
|
if (!driver) driver = requireEngineDriver(connection);
|
|
|
|
const pool = systemConnection || (await connectUtility(driver, connection));
|
|
if (!analysedStructure) {
|
|
analysedStructure = await driver.analyseFull(pool);
|
|
}
|
|
|
|
const deployedModel = generateDbPairingId(
|
|
extendDatabaseInfo(loadedDbModel ? databaseInfoFromYamlModel(loadedDbModel) : await importDbModel(modelFolder))
|
|
);
|
|
const currentModel = generateDbPairingId(extendDatabaseInfo(analysedStructure));
|
|
const opts = {
|
|
...modelCompareDbDiffOptions,
|
|
|
|
noDropTable: true,
|
|
noDropColumn: true,
|
|
noDropConstraint: true,
|
|
noDropSqlObject: true,
|
|
noRenameTable: true,
|
|
noRenameColumn: true,
|
|
};
|
|
const currentModelPaired = matchPairedObjects(deployedModel, currentModel, opts);
|
|
const currentModelPairedPreloaded = await enrichWithPreloadedRows(deployedModel, currentModelPaired, pool, driver);
|
|
|
|
// console.log('currentModelPairedPreloaded', currentModelPairedPreloaded.tables[0]);
|
|
// console.log('deployedModel', deployedModel.tables[0]);
|
|
// console.log('currentModel', currentModel.tables[0]);
|
|
// console.log('currentModelPaired', currentModelPaired.tables[0]);
|
|
const res = getAlterDatabaseScript(
|
|
currentModelPairedPreloaded,
|
|
deployedModel,
|
|
opts,
|
|
currentModelPairedPreloaded,
|
|
deployedModel,
|
|
driver
|
|
);
|
|
return res;
|
|
}
|
|
|
|
module.exports = generateDeploySql;
|