db depoloy simple test

This commit is contained in:
Jan Prochazka
2021-10-02 14:32:56 +02:00
parent 0974c76fc6
commit d953d1b342
5 changed files with 94 additions and 59 deletions

View File

@@ -1,8 +1,16 @@
const EnsureStreamHeaderStream = require('../utility/EnsureStreamHeaderStream');
const importDbModel = require('../utility/importDbModel');
const generateDeploySql = require('./generateDeploySql');
const executeQuery = require('./executeQuery');
async function deployDb(connection, modelFolder, options) {
const dbModel = await importDbModel(modelFolder);
async function deployDb({ connection, systemConnection, driver, analysedStructure, modelFolder, loadedDbModel }) {
const sql = await generateDeploySql({
connection,
systemConnection,
driver,
analysedStructure,
modelFolder,
loadedDbModel,
});
await executeQuery({ connection, systemConnection, driver, sql });
}
module.exports = deployDb;

View File

@@ -2,11 +2,11 @@ const { splitQuery } = require('dbgate-query-splitter');
const requireEngineDriver = require('../utility/requireEngineDriver');
const connectUtility = require('../utility/connectUtility');
async function executeQuery({ connection, sql }) {
async function executeQuery({ connection = undefined, systemConnection = undefined, driver = undefined, sql }) {
console.log(`Execute query ${sql}`);
const driver = requireEngineDriver(connection);
const pool = await connectUtility(driver, connection);
if (!driver) driver = requireEngineDriver(connection);
const pool = systemConnection || (await connectUtility(driver, connection));
console.log(`Connected.`);
for (const sqlItem of splitQuery(sql, driver.getQuerySplitterOptions('script'))) {

View File

@@ -0,0 +1,34 @@
const {
getAlterDatabaseScript,
generateDbPairingId,
matchPairedObjects,
databaseInfoFromYamlModel,
} = 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);
if (!analysedStructure) {
const pool = systemConnection || (await connectUtility(driver, connection));
analysedStructure = await driver.analyseFull(pool);
}
const deployedModel = generateDbPairingId(
loadedDbModel ? databaseInfoFromYamlModel(loadedDbModel) : await importDbModel(modelFolder)
);
const currentModel = generateDbPairingId(analysedStructure);
const currentModelPaired = matchPairedObjects(deployedModel, currentModel);
const { sql } = getAlterDatabaseScript(currentModelPaired, deployedModel, {}, deployedModel, driver);
return sql;
}
module.exports = generateDeploySql;