mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-27 17:16:01 +00:00
feat: add triggers to ui
This commit is contained in:
@@ -39,6 +39,7 @@
|
|||||||
procedures: 'img procedure',
|
procedures: 'img procedure',
|
||||||
functions: 'img function',
|
functions: 'img function',
|
||||||
queries: 'img query-data',
|
queries: 'img query-data',
|
||||||
|
triggers: 'icon trigger',
|
||||||
};
|
};
|
||||||
|
|
||||||
const defaultTabs = {
|
const defaultTabs = {
|
||||||
@@ -49,6 +50,7 @@
|
|||||||
queries: 'QueryDataTab',
|
queries: 'QueryDataTab',
|
||||||
procedures: 'SqlObjectTab',
|
procedures: 'SqlObjectTab',
|
||||||
functions: 'SqlObjectTab',
|
functions: 'SqlObjectTab',
|
||||||
|
triggers: 'SqlObjectTab',
|
||||||
};
|
};
|
||||||
|
|
||||||
function createScriptTemplatesSubmenu(objectTypeField) {
|
function createScriptTemplatesSubmenu(objectTypeField) {
|
||||||
@@ -340,40 +342,8 @@
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
case 'functions':
|
case 'functions':
|
||||||
return [
|
case 'triggers':
|
||||||
...defaultDatabaseObjectAppObjectActions['functions'],
|
return [...defaultDatabaseObjectAppObjectActions['triggers']];
|
||||||
{
|
|
||||||
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 'collections':
|
case 'collections':
|
||||||
return [
|
return [
|
||||||
...defaultDatabaseObjectAppObjectActions['collections'],
|
...defaultDatabaseObjectAppObjectActions['collections'],
|
||||||
@@ -751,7 +721,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const availableDefaultActions = defaultDatabaseObjectAppObjectActions[objectTypeField];
|
const availableDefaultActions = defaultDatabaseObjectAppObjectActions[objectTypeField] ?? [];
|
||||||
|
|
||||||
const configuredActionId = getLastUsedDefaultActions()[objectTypeField];
|
const configuredActionId = getLastUsedDefaultActions()[objectTypeField];
|
||||||
const prefferedAction =
|
const prefferedAction =
|
||||||
@@ -953,6 +923,10 @@
|
|||||||
|
|
||||||
function getExtInfo(data) {
|
function getExtInfo(data) {
|
||||||
const res = [];
|
const res = [];
|
||||||
|
if (data.objectTypeField === 'triggers') {
|
||||||
|
res.push(`${data.triggerTiming ?? ''} ${data.eventType ?? ''}`.toLowerCase());
|
||||||
|
}
|
||||||
|
|
||||||
if (data.objectComment) {
|
if (data.objectComment) {
|
||||||
res.push(data.objectComment);
|
res.push(data.objectComment);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,6 +60,14 @@ export const defaultDatabaseObjectAppObjectActions = {
|
|||||||
icon: 'img sql-file',
|
icon: 'img sql-file',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
triggers: [
|
||||||
|
{
|
||||||
|
label: 'Show SQL',
|
||||||
|
tab: 'SqlObjectTab',
|
||||||
|
defaultActionId: 'showSql',
|
||||||
|
icon: 'img sql-file',
|
||||||
|
},
|
||||||
|
],
|
||||||
collections: [
|
collections: [
|
||||||
{
|
{
|
||||||
label: 'Open data',
|
label: 'Open data',
|
||||||
|
|||||||
@@ -64,6 +64,7 @@
|
|||||||
'icon add-folder': 'mdi mdi-folder-plus-outline',
|
'icon add-folder': 'mdi mdi-folder-plus-outline',
|
||||||
'icon add-column': 'mdi mdi-table-column-plus-after',
|
'icon add-column': 'mdi mdi-table-column-plus-after',
|
||||||
'icon parameter': 'mdi mdi-at',
|
'icon parameter': 'mdi mdi-at',
|
||||||
|
'icon trigger': 'mdi mdi-lightning-bolt',
|
||||||
|
|
||||||
'icon window-restore': 'mdi mdi-window-restore',
|
'icon window-restore': 'mdi mdi-window-restore',
|
||||||
'icon window-maximize': 'mdi mdi-window-maximize',
|
'icon window-maximize': 'mdi mdi-window-maximize',
|
||||||
|
|||||||
@@ -166,6 +166,13 @@ export function getSupportedScriptTemplates(objectTypeField: string): { label: s
|
|||||||
scriptTemplate: 'CALL OBJECT',
|
scriptTemplate: 'CALL OBJECT',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
case 'triggers':
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: 'CREATE TRIGGER',
|
||||||
|
scriptTemplate: 'CREATE OBJECT',
|
||||||
|
},
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
// $: console.log('OBJECTS', $objects);
|
// $: console.log('OBJECTS', $objects);
|
||||||
|
|
||||||
$: objectList = _.flatten([
|
$: objectList = _.flatten([
|
||||||
...['tables', 'collections', 'views', 'matviews', 'procedures', 'functions'].map(objectTypeField =>
|
...['tables', 'collections', 'views', 'matviews', 'procedures', 'functions', 'triggers'].map(objectTypeField =>
|
||||||
_.sortBy(
|
_.sortBy(
|
||||||
(($objects || {})[objectTypeField] || []).map(obj => ({ ...obj, objectTypeField })),
|
(($objects || {})[objectTypeField] || []).map(obj => ({ ...obj, objectTypeField })),
|
||||||
['schemaName', 'pureName']
|
['schemaName', 'pureName']
|
||||||
|
|||||||
Reference in New Issue
Block a user