deploy: ignoreNameRegex

This commit is contained in:
SPRINX0\prochazka
2024-11-11 08:11:44 +01:00
parent 0266d912e0
commit 62c741198a
3 changed files with 25 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ async function deployDb({
loadedDbModel,
modelTransforms,
dbdiffOptionsExtra,
ignoreNameRegex = '',
}) {
const { sql } = await generateDeploySql({
connection,
@@ -20,6 +21,7 @@ async function deployDb({
loadedDbModel,
modelTransforms,
dbdiffOptionsExtra,
ignoreNameRegex,
});
// console.log('RUNNING DEPLOY SCRIPT:', sql);
await executeQuery({ connection, systemConnection, driver, sql, logScriptItems: true });

View File

@@ -6,6 +6,7 @@ const {
extendDatabaseInfo,
modelCompareDbDiffOptions,
enrichWithPreloadedRows,
skipNamesInStructureByRegex,
} = require('dbgate-tools');
const importDbModel = require('../utility/importDbModel');
const requireEngineDriver = require('../utility/requireEngineDriver');
@@ -20,6 +21,7 @@ async function generateDeploySql({
loadedDbModel = undefined,
modelTransforms = undefined,
dbdiffOptionsExtra = {},
ignoreNameRegex = '',
}) {
if (!driver) driver = requireEngineDriver(connection);
@@ -30,6 +32,10 @@ async function generateDeploySql({
analysedStructure = await driver.analyseFull(dbhan);
}
if (ignoreNameRegex) {
analysedStructure = skipNamesInStructureByRegex(analysedStructure, new RegExp(ignoreNameRegex, 'i'));
}
let deployedModelSource = loadedDbModel
? databaseInfoFromYamlModel(loadedDbModel)
: await importDbModel(modelFolder);

View File

@@ -203,3 +203,20 @@ export function replaceSchemaInStructure(db: DatabaseInfo, schema: string) {
triggers: (db.triggers || []).map(x => ({ ...x, schemaName: schema })),
};
}
export function skipNamesInStructureByRegex(db: DatabaseInfo, regex: RegExp) {
if (!db) {
return db;
}
return {
...db,
tables: (db.tables || []).filter(tbl => !regex.test(tbl.pureName)),
views: (db.views || []).filter(tbl => !regex.test(tbl.pureName)),
collections: (db.collections || []).filter(tbl => !regex.test(tbl.pureName)),
matviews: (db.matviews || []).filter(tbl => !regex.test(tbl.pureName)),
procedures: (db.procedures || []).filter(tbl => !regex.test(tbl.pureName)),
functions: (db.functions || []).filter(tbl => !regex.test(tbl.pureName)),
triggers: (db.triggers || []).filter(tbl => !regex.test(tbl.pureName)),
};
}