Files
dbgate/packages/api/src/shell/deployDb.js
2024-11-11 15:37:58 +01:00

45 lines
1.3 KiB
JavaScript

const generateDeploySql = require('./generateDeploySql');
const executeQuery = require('./executeQuery');
const { ScriptDrivedDeployer } = require('dbgate-datalib');
const connectUtility = require('../utility/connectUtility');
const requireEngineDriver = require('../utility/requireEngineDriver');
const loadModelFolder = require('../utility/loadModelFolder');
async function deployDb({
connection,
systemConnection,
driver,
analysedStructure,
modelFolder,
loadedDbModel,
modelTransforms,
dbdiffOptionsExtra,
ignoreNameRegex = '',
targetSchema = null,
}) {
const dbhan = systemConnection || (await connectUtility(driver, connection, 'read'));
if (!driver) driver = requireEngineDriver(connection);
const scriptDeployer = new ScriptDrivedDeployer(dbhan, driver, loadedDbModel ?? (await loadModelFolder(modelFolder)));
await scriptDeployer.runPre();
const { sql } = await generateDeploySql({
connection,
systemConnection: dbhan,
driver,
analysedStructure,
modelFolder,
loadedDbModel,
modelTransforms,
dbdiffOptionsExtra,
ignoreNameRegex,
targetSchema,
});
// console.log('RUNNING DEPLOY SCRIPT:', sql);
await executeQuery({ connection, systemConnection: dbhan, driver, sql, logScriptItems: true });
await scriptDeployer.runPost();
}
module.exports = deployDb;