feat: add triggers to ui

This commit is contained in:
Nybkox
2024-12-17 10:08:23 +01:00
parent d32af771dc
commit 9e941dfce2
5 changed files with 26 additions and 36 deletions

View File

@@ -39,6 +39,7 @@
procedures: 'img procedure',
functions: 'img function',
queries: 'img query-data',
triggers: 'icon trigger',
};
const defaultTabs = {
@@ -49,6 +50,7 @@
queries: 'QueryDataTab',
procedures: 'SqlObjectTab',
functions: 'SqlObjectTab',
triggers: 'SqlObjectTab',
};
function createScriptTemplatesSubmenu(objectTypeField) {
@@ -340,40 +342,8 @@
},
];
case 'functions':
return [
...defaultDatabaseObjectAppObjectActions['functions'],
{
divider: true,
},
hasPermission('dbops/model/edit') && {
label: 'Drop function',
isDrop: true,
requiresWriteAccess: true,
},
hasPermission('dbops/model/edit') && {
label: 'Rename function',
isRename: true,
requiresWriteAccess: true,
},
createScriptTemplatesSubmenu('functions'),
{
label: 'SQL generator',
submenu: [
{
label: 'CREATE FUNCTION',
sqlGeneratorProps: {
createFunctions: true,
},
},
{
label: 'DROP FUNCTION',
sqlGeneratorProps: {
dropFunctions: true,
},
},
],
},
];
case 'triggers':
return [...defaultDatabaseObjectAppObjectActions['triggers']];
case 'collections':
return [
...defaultDatabaseObjectAppObjectActions['collections'],
@@ -751,7 +721,7 @@
return;
}
const availableDefaultActions = defaultDatabaseObjectAppObjectActions[objectTypeField];
const availableDefaultActions = defaultDatabaseObjectAppObjectActions[objectTypeField] ?? [];
const configuredActionId = getLastUsedDefaultActions()[objectTypeField];
const prefferedAction =
@@ -953,6 +923,10 @@
function getExtInfo(data) {
const res = [];
if (data.objectTypeField === 'triggers') {
res.push(`${data.triggerTiming ?? ''} ${data.eventType ?? ''}`.toLowerCase());
}
if (data.objectComment) {
res.push(data.objectComment);
}

View File

@@ -60,6 +60,14 @@ export const defaultDatabaseObjectAppObjectActions = {
icon: 'img sql-file',
},
],
triggers: [
{
label: 'Show SQL',
tab: 'SqlObjectTab',
defaultActionId: 'showSql',
icon: 'img sql-file',
},
],
collections: [
{
label: 'Open data',

View File

@@ -64,6 +64,7 @@
'icon add-folder': 'mdi mdi-folder-plus-outline',
'icon add-column': 'mdi mdi-table-column-plus-after',
'icon parameter': 'mdi mdi-at',
'icon trigger': 'mdi mdi-lightning-bolt',
'icon window-restore': 'mdi mdi-window-restore',
'icon window-maximize': 'mdi mdi-window-maximize',

View File

@@ -166,6 +166,13 @@ export function getSupportedScriptTemplates(objectTypeField: string): { label: s
scriptTemplate: 'CALL OBJECT',
},
];
case 'triggers':
return [
{
label: 'CREATE TRIGGER',
scriptTemplate: 'CREATE OBJECT',
},
];
}
return [];

View File

@@ -80,7 +80,7 @@
// $: console.log('OBJECTS', $objects);
$: objectList = _.flatten([
...['tables', 'collections', 'views', 'matviews', 'procedures', 'functions'].map(objectTypeField =>
...['tables', 'collections', 'views', 'matviews', 'procedures', 'functions', 'triggers'].map(objectTypeField =>
_.sortBy(
(($objects || {})[objectTypeField] || []).map(obj => ({ ...obj, objectTypeField })),
['schemaName', 'pureName']