mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-02 06:43:59 +00:00
feat: add scheduler events to ui
This commit is contained in:
@@ -42,6 +42,7 @@
|
|||||||
functions: 'img function',
|
functions: 'img function',
|
||||||
queries: 'img query-data',
|
queries: 'img query-data',
|
||||||
triggers: 'icon trigger',
|
triggers: 'icon trigger',
|
||||||
|
schedulerEvents: 'icon scheduler-event',
|
||||||
};
|
};
|
||||||
|
|
||||||
const defaultTabs = {
|
const defaultTabs = {
|
||||||
@@ -87,6 +88,8 @@
|
|||||||
isDropCollection?: boolean;
|
isDropCollection?: boolean;
|
||||||
isRenameCollection?: boolean;
|
isRenameCollection?: boolean;
|
||||||
isDuplicateCollection?: boolean;
|
isDuplicateCollection?: boolean;
|
||||||
|
isDisableEvent?: boolean;
|
||||||
|
isEnableEvent?: boolean;
|
||||||
submenu?: DbObjMenuItem[];
|
submenu?: DbObjMenuItem[];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,6 +386,21 @@
|
|||||||
},
|
},
|
||||||
...(driver?.getScriptTemplates?.('collections') || []),
|
...(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
|
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) {
|
} else if (menu.isTruncate) {
|
||||||
const { conid, database } = data;
|
const { conid, database } = data;
|
||||||
const driver = await getDriver();
|
const driver = await getDriver();
|
||||||
@@ -939,6 +987,15 @@
|
|||||||
if (data.objectTypeField === 'triggers') {
|
if (data.objectTypeField === 'triggers') {
|
||||||
res.push(`${data.tableName}, ${data.triggerTiming?.toLowerCase() ?? ''} ${data.eventType?.toLowerCase() ?? ''}`);
|
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) {
|
if (data.objectComment) {
|
||||||
res.push(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 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 trigger': 'mdi mdi-lightning-bolt',
|
||||||
|
'icon scheduler-event': 'mdi mdi-calendar-blank',
|
||||||
|
|
||||||
'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',
|
||||||
|
|||||||
@@ -173,6 +173,13 @@ export function getSupportedScriptTemplates(objectTypeField: string): { label: s
|
|||||||
scriptTemplate: 'CREATE OBJECT',
|
scriptTemplate: 'CREATE OBJECT',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
case 'schedulerEvents':
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: 'CREATE SCHEDULER EVENT',
|
||||||
|
scriptTemplate: 'CREATE OBJECT',
|
||||||
|
},
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
function generateObjectList(seed = 0) {
|
function generateObjectList(seed = 0) {
|
||||||
const counts = [1000, 1200, 1100, 2100, 720];
|
const counts = [1000, 1200, 1100, 2100, 720];
|
||||||
const schemas = ['A', 'dev', 'public', 'dbo'];
|
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 => ({
|
const res = _.range(1, counts[seed % counts.length]).map(i => ({
|
||||||
pureName: `name ${i}`,
|
pureName: `name ${i}`,
|
||||||
schemaName: schemas[i % schemas.length],
|
schemaName: schemas[i % schemas.length],
|
||||||
@@ -80,7 +80,8 @@
|
|||||||
// $: console.log('OBJECTS', $objects);
|
// $: console.log('OBJECTS', $objects);
|
||||||
|
|
||||||
$: objectList = _.flatten([
|
$: objectList = _.flatten([
|
||||||
...['tables', 'collections', 'views', 'matviews', 'procedures', 'functions', 'triggers'].map(objectTypeField =>
|
...['tables', 'collections', 'views', 'matviews', 'procedures', 'functions', 'triggers', 'schedulerEvents'].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