diff --git a/src/main/libs/clients/MySQLClient.js b/src/main/libs/clients/MySQLClient.js index 967248e2..8a37f17a 100644 --- a/src/main/libs/clients/MySQLClient.js +++ b/src/main/libs/clients/MySQLClient.js @@ -731,7 +731,7 @@ export class MySQLClient extends AntaresCore { COMMENT '${scheduler.comment}' DO ${scheduler.sql}`; - return await this.raw(sql); + return await this.raw(sql, { split: false }); } /** @@ -741,18 +741,15 @@ export class MySQLClient extends AntaresCore { * @memberof MySQLClient */ async createEvent (scheduler) { - const parameters = scheduler.parameters.reduce((acc, curr) => { - acc.push(`\`${curr.name}\` ${curr.type}${curr.length ? `(${curr.length})` : ''}`); - return acc; - }, []).join(','); - - const sql = `CREATE ${scheduler.definer ? `DEFINER=${scheduler.definer} ` : ''}FUNCTION \`${scheduler.name}\`(${parameters}) RETURNS ${scheduler.returns}${scheduler.returnsLength ? `(${scheduler.returnsLength})` : ''} - LANGUAGE SQL - ${scheduler.deterministic ? 'DETERMINISTIC' : 'NOT DETERMINISTIC'} - ${scheduler.dataAccess} - SQL SECURITY ${scheduler.security} - COMMENT '${scheduler.comment}' - ${scheduler.sql}`; + const sql = `CREATE ${scheduler.definer ? ` DEFINER=${scheduler.definer}` : ''} EVENT \`${scheduler.name}\` + ON SCHEDULE + ${scheduler.execution === 'EVERY' + ? `EVERY ${scheduler.every.join(' ')}${scheduler.starts ? ` STARTS '${scheduler.starts}'` : ''}${scheduler.ends ? ` ENDS '${scheduler.ends}'` : ''}` + : `AT '${scheduler.at}'`} + ON COMPLETION${!scheduler.preserve ? ' NOT' : ''} PRESERVE + ${scheduler.state} + COMMENT '${scheduler.comment}' + DO ${scheduler.sql}`; return await this.raw(sql, { split: false }); } diff --git a/src/renderer/components/ModalNewScheduler.vue b/src/renderer/components/ModalNewScheduler.vue new file mode 100644 index 00000000..432b5a8f --- /dev/null +++ b/src/renderer/components/ModalNewScheduler.vue @@ -0,0 +1,109 @@ + + + diff --git a/src/renderer/components/WorkspaceExploreBar.vue b/src/renderer/components/WorkspaceExploreBar.vue index 33fcf1ed..e3bdb9dd 100644 --- a/src/renderer/components/WorkspaceExploreBar.vue +++ b/src/renderer/components/WorkspaceExploreBar.vue @@ -79,6 +79,12 @@ @close="hideCreateFunctionModal" @open-create-function-editor="openCreateFunctionEditor" /> + {{ $tc('word.function', 1) }} -
+
{{ $tc('word.scheduler', 1) }}
@@ -111,6 +111,9 @@ export default { showCreateFunctionModal () { this.$emit('show-create-function-modal'); }, + showCreateSchedulerModal () { + this.$emit('show-create-scheduler-modal'); + }, showDeleteModal () { this.isDeleteModal = true; }, diff --git a/src/renderer/components/WorkspacePropsSchedulerTimingModal.vue b/src/renderer/components/WorkspacePropsSchedulerTimingModal.vue index 08c0369e..13273689 100644 --- a/src/renderer/components/WorkspacePropsSchedulerTimingModal.vue +++ b/src/renderer/components/WorkspacePropsSchedulerTimingModal.vue @@ -168,6 +168,8 @@ export default { this.hasEnd = !!this.optionsProxy.ends; if (!this.optionsProxy.at) this.optionsProxy.at = moment().format('YYYY-MM-DD HH:mm:ss'); + if (!this.optionsProxy.starts) this.optionsProxy.starts = moment().format('YYYY-MM-DD HH:mm:ss'); + if (!this.optionsProxy.ends) this.optionsProxy.ends = moment().format('YYYY-MM-DD HH:mm:ss'); if (!this.optionsProxy.every.length) this.optionsProxy.every = ['1', 'DAY']; setTimeout(() => {