mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-23 18:35:58 +00:00
feat: add scheduler events to ui
This commit is contained in:
@@ -42,6 +42,7 @@
|
||||
functions: 'img function',
|
||||
queries: 'img query-data',
|
||||
triggers: 'icon trigger',
|
||||
schedulerEvents: 'icon scheduler-event',
|
||||
};
|
||||
|
||||
const defaultTabs = {
|
||||
@@ -87,6 +88,8 @@
|
||||
isDropCollection?: boolean;
|
||||
isRenameCollection?: boolean;
|
||||
isDuplicateCollection?: boolean;
|
||||
isDisableEvent?: boolean;
|
||||
isEnableEvent?: boolean;
|
||||
submenu?: DbObjMenuItem[];
|
||||
}
|
||||
|
||||
@@ -383,6 +386,21 @@
|
||||
},
|
||||
...(driver?.getScriptTemplates?.('collections') || []),
|
||||
];
|
||||
case 'schedulerEvents':
|
||||
return [
|
||||
...defaultDatabaseObjectAppObjectActions['schedulerEvents'],
|
||||
{
|
||||
divider: true,
|
||||
},
|
||||
{
|
||||
label: 'Disable',
|
||||
isDisableEvent: true,
|
||||
},
|
||||
{
|
||||
label: 'Enable',
|
||||
isEnableEvent: true,
|
||||
},
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -479,6 +497,36 @@
|
||||
x => x.schemaName == data.schemaName && x.pureName == data.pureName
|
||||
);
|
||||
});
|
||||
} else if (menu.isDisableEvent) {
|
||||
const { conid, database, disableSql } = data;
|
||||
const driver = await getDriver();
|
||||
const dmp = driver.createDumper();
|
||||
dmp.put(disableSql);
|
||||
|
||||
const sql = dmp.s;
|
||||
|
||||
showModal(ConfirmSqlModal, {
|
||||
sql,
|
||||
onConfirm: async () => {
|
||||
saveScriptToDatabase({ conid, database }, sql);
|
||||
},
|
||||
engine: driver.engine,
|
||||
});
|
||||
} else if (menu.isEnableEvent) {
|
||||
const { conid, database, enableSql } = data;
|
||||
const driver = await getDriver();
|
||||
const dmp = driver.createDumper();
|
||||
dmp.put(enableSql);
|
||||
|
||||
const sql = dmp.s;
|
||||
|
||||
showModal(ConfirmSqlModal, {
|
||||
sql,
|
||||
onConfirm: async () => {
|
||||
saveScriptToDatabase({ conid, database }, sql);
|
||||
},
|
||||
engine: driver.engine,
|
||||
});
|
||||
} else if (menu.isTruncate) {
|
||||
const { conid, database } = data;
|
||||
const driver = await getDriver();
|
||||
@@ -939,6 +987,15 @@
|
||||
if (data.objectTypeField === 'triggers') {
|
||||
res.push(`${data.tableName}, ${data.triggerTiming?.toLowerCase() ?? ''} ${data.eventType?.toLowerCase() ?? ''}`);
|
||||
}
|
||||
|
||||
if (data.objectTypeField == 'schedulerEvents') {
|
||||
if (data.eventType == 'RECURRING') {
|
||||
res.push(`${data.status}, ${data.eventType}, ${data.intervalValue} ${data.intervalField}`);
|
||||
} else {
|
||||
res.push(`${data.status}, ${data.eventType}, ${data.executeAt}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (data.objectComment) {
|
||||
res.push(data.objectComment);
|
||||
}
|
||||
|
||||
@@ -85,4 +85,12 @@ export const defaultDatabaseObjectAppObjectActions = {
|
||||
},
|
||||
},
|
||||
],
|
||||
schedulerEvents: [
|
||||
{
|
||||
label: 'Show SQL',
|
||||
tab: 'SqlObjectTab',
|
||||
defaultActionId: 'showSql',
|
||||
icon: 'img sql-file',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
'icon add-column': 'mdi mdi-table-column-plus-after',
|
||||
'icon parameter': 'mdi mdi-at',
|
||||
'icon trigger': 'mdi mdi-lightning-bolt',
|
||||
'icon scheduler-event': 'mdi mdi-calendar-blank',
|
||||
|
||||
'icon window-restore': 'mdi mdi-window-restore',
|
||||
'icon window-maximize': 'mdi mdi-window-maximize',
|
||||
|
||||
@@ -173,6 +173,13 @@ export function getSupportedScriptTemplates(objectTypeField: string): { label: s
|
||||
scriptTemplate: 'CREATE OBJECT',
|
||||
},
|
||||
];
|
||||
case 'schedulerEvents':
|
||||
return [
|
||||
{
|
||||
label: 'CREATE SCHEDULER EVENT',
|
||||
scriptTemplate: 'CREATE OBJECT',
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
return [];
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
function generateObjectList(seed = 0) {
|
||||
const counts = [1000, 1200, 1100, 2100, 720];
|
||||
const schemas = ['A', 'dev', 'public', 'dbo'];
|
||||
const types = ['tables', 'views', 'functions', 'procedures', 'matviews', 'triggers'];
|
||||
const types = ['tables', 'views', 'functions', 'procedures', 'matviews', 'triggers', 'schedulerEvents'];
|
||||
const res = _.range(1, counts[seed % counts.length]).map(i => ({
|
||||
pureName: `name ${i}`,
|
||||
schemaName: schemas[i % schemas.length],
|
||||
@@ -80,11 +80,12 @@
|
||||
// $: console.log('OBJECTS', $objects);
|
||||
|
||||
$: objectList = _.flatten([
|
||||
...['tables', 'collections', 'views', 'matviews', 'procedures', 'functions', 'triggers'].map(objectTypeField =>
|
||||
_.sortBy(
|
||||
(($objects || {})[objectTypeField] || []).map(obj => ({ ...obj, objectTypeField })),
|
||||
['schemaName', 'pureName']
|
||||
)
|
||||
...['tables', 'collections', 'views', 'matviews', 'procedures', 'functions', 'triggers', 'schedulerEvents'].map(
|
||||
objectTypeField =>
|
||||
_.sortBy(
|
||||
(($objects || {})[objectTypeField] || []).map(obj => ({ ...obj, objectTypeField })),
|
||||
['schemaName', 'pureName']
|
||||
)
|
||||
),
|
||||
...dbApps.map(app =>
|
||||
app.queries.map(query => ({
|
||||
|
||||
Reference in New Issue
Block a user