rename view/procedure/function

This commit is contained in:
SPRINX0\prochazka
2024-11-19 12:18:56 +01:00
parent 8328fdad33
commit e33f3a1492
4 changed files with 43 additions and 16 deletions

View File

@@ -44,15 +44,16 @@ async function generateDeploySql({
analysedStructure = await driver.analyseFull(dbhan); analysedStructure = await driver.analyseFull(dbhan);
} }
if (ignoreNameRegex) {
analysedStructure = skipNamesInStructureByRegex(analysedStructure, new RegExp(ignoreNameRegex, 'i'));
}
analysedStructure = skipDbGateInternalObjects(analysedStructure);
let deployedModelSource = loadedDbModel let deployedModelSource = loadedDbModel
? databaseInfoFromYamlModel(loadedDbModel) ? databaseInfoFromYamlModel(loadedDbModel)
: await importDbModel(modelFolder); : await importDbModel(modelFolder);
if (ignoreNameRegex) {
analysedStructure = skipNamesInStructureByRegex(analysedStructure, new RegExp(ignoreNameRegex, 'i'));
deployedModelSource = skipNamesInStructureByRegex(deployedModelSource, new RegExp(ignoreNameRegex, 'i'));
}
analysedStructure = skipDbGateInternalObjects(analysedStructure);
for (const transform of modelTransforms || []) { for (const transform of modelTransforms || []) {
deployedModelSource = transform(deployedModelSource); deployedModelSource = transform(deployedModelSource);
} }

View File

@@ -748,6 +748,8 @@ export function createAlterDatabasePlan(
plan.recreates.sqlObjects += 1; plan.recreates.sqlObjects += 1;
plan.dropSqlObject(oldobj); plan.dropSqlObject(oldobj);
plan.createSqlObject(newobj); plan.createSqlObject(newobj);
} else if (!testEqualFullNames(oldobj, newobj, opts)) {
plan.renameSqlObject(oldobj, newobj.pureName);
} }
} }
} }

View File

@@ -219,13 +219,13 @@ export function skipNamesInStructureByRegex(db: DatabaseInfo, regex: RegExp) {
return { return {
...db, ...db,
tables: (db.tables || []).filter(tbl => !regex.test(tbl.pureName)), tables: (db.tables || []).filter(x => !regex.test(x.pureName)),
views: (db.views || []).filter(tbl => !regex.test(tbl.pureName)), views: (db.views || []).filter(x => !regex.test(x.pureName)),
collections: (db.collections || []).filter(tbl => !regex.test(tbl.pureName)), collections: (db.collections || []).filter(x => !regex.test(x.pureName)),
matviews: (db.matviews || []).filter(tbl => !regex.test(tbl.pureName)), matviews: (db.matviews || []).filter(x => !regex.test(x.pureName)),
procedures: (db.procedures || []).filter(tbl => !regex.test(tbl.pureName)), procedures: (db.procedures || []).filter(x => !regex.test(x.pureName)),
functions: (db.functions || []).filter(tbl => !regex.test(tbl.pureName)), functions: (db.functions || []).filter(x => !regex.test(x.pureName)),
triggers: (db.triggers || []).filter(tbl => !regex.test(tbl.pureName)), triggers: (db.triggers || []).filter(x => !regex.test(x.pureName)),
}; };
} }

View File

@@ -197,9 +197,15 @@
forceNewTab: true, forceNewTab: true,
icon: 'img perspective', icon: 'img perspective',
}, },
{ hasPermission('dbops/model/edit') && {
label: 'Drop view', label: 'Drop view',
isDrop: true, isDrop: true,
requiresWriteAccess: true,
},
hasPermission('dbops/model/edit') && {
label: 'Rename view',
isRename: true,
requiresWriteAccess: true,
}, },
{ {
divider: true, divider: true,
@@ -256,9 +262,15 @@
label: 'Open structure', label: 'Open structure',
tab: 'TableStructureTab', tab: 'TableStructureTab',
}, },
{ hasPermission('dbops/model/edit') && {
label: 'Drop view', label: 'Drop view',
isDrop: true, isDrop: true,
requiresWriteAccess: true,
},
hasPermission('dbops/model/edit') && {
label: 'Rename view',
isRename: true,
requiresWriteAccess: true,
}, },
{ {
label: 'Query designer', label: 'Query designer',
@@ -318,9 +330,15 @@
]; ];
case 'procedures': case 'procedures':
return [ return [
{ hasPermission('dbops/model/edit') && {
label: 'Drop procedure', label: 'Drop procedure',
isDrop: true, isDrop: true,
requiresWriteAccess: true,
},
hasPermission('dbops/model/edit') && {
label: 'Rename procedure',
isRename: true,
requiresWriteAccess: true,
}, },
{ {
label: 'SQL: CREATE PROCEDURE', label: 'SQL: CREATE PROCEDURE',
@@ -349,9 +367,15 @@
]; ];
case 'functions': case 'functions':
return [ return [
{ hasPermission('dbops/model/edit') && {
label: 'Drop function', label: 'Drop function',
isDrop: true, isDrop: true,
requiresWriteAccess: true,
},
hasPermission('dbops/model/edit') && {
label: 'Rename function',
isRename: true,
requiresWriteAccess: true,
}, },
{ {
label: 'SQL: CREATE FUNCTION', label: 'SQL: CREATE FUNCTION',