mirror of
https://github.com/Fabio286/antares.git
synced 2025-06-05 21:59:22 +02:00
feat(MySQL): enable/disable schedulers from contextual menu
This commit is contained in:
@ -40,4 +40,17 @@ export default (connections) => {
|
|||||||
return { status: 'error', response: err.toString() };
|
return { status: 'error', response: err.toString() };
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcMain.handle('toggle-scheduler', async (event, params) => {
|
||||||
|
try {
|
||||||
|
if (!params.enabled)
|
||||||
|
await connections[params.uid].enableEvent({ ...params });
|
||||||
|
else
|
||||||
|
await connections[params.uid].disableEvent({ ...params });
|
||||||
|
return { status: 'success' };
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
return { status: 'error', response: err.toString() };
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
@ -45,10 +45,8 @@ export default (connections) => {
|
|||||||
try {
|
try {
|
||||||
if (!params.enabled)
|
if (!params.enabled)
|
||||||
await connections[params.uid].enableTrigger(params);
|
await connections[params.uid].enableTrigger(params);
|
||||||
|
|
||||||
else
|
else
|
||||||
await connections[params.uid].disableTrigger(params);
|
await connections[params.uid].disableTrigger(params);
|
||||||
|
|
||||||
return { status: 'success' };
|
return { status: 'success' };
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
|
@ -1072,6 +1072,16 @@ export class MySQLClient extends AntaresCore {
|
|||||||
return await this.raw(sql, { split: false });
|
return await this.raw(sql, { split: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async enableEvent ({ schema, scheduler }) {
|
||||||
|
const sql = `ALTER EVENT \`${schema}\`.\`${scheduler}\` ENABLE`;
|
||||||
|
return await this.raw(sql, { split: false });
|
||||||
|
}
|
||||||
|
|
||||||
|
async disableEvent ({ schema, scheduler }) {
|
||||||
|
const sql = `ALTER EVENT \`${schema}\`.\`${scheduler}\` DISABLE`;
|
||||||
|
return await this.raw(sql, { split: false });
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SHOW COLLATION
|
* SHOW COLLATION
|
||||||
*
|
*
|
||||||
|
@ -22,6 +22,18 @@
|
|||||||
<i class="mdi mdi-18px mdi-pause text-light pr-1" /> {{ $t('word.disable') }}
|
<i class="mdi mdi-18px mdi-pause text-light pr-1" /> {{ $t('word.disable') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="selectedMisc.type === 'scheduler'"
|
||||||
|
class="context-element"
|
||||||
|
@click="toggleScheduler"
|
||||||
|
>
|
||||||
|
<span v-if="!selectedMisc.enabled" class="d-flex">
|
||||||
|
<i class="mdi mdi-18px mdi-play text-light pr-1" /> {{ $t('word.enable') }}
|
||||||
|
</span>
|
||||||
|
<span v-else class="d-flex">
|
||||||
|
<i class="mdi mdi-18px mdi-pause text-light pr-1" /> {{ $t('word.disable') }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
<div class="context-element" @click="showDeleteModal">
|
<div class="context-element" @click="showDeleteModal">
|
||||||
<span class="d-flex"><i class="mdi mdi-18px mdi-table-remove text-light pr-1" /> {{ $t('word.delete') }}</span>
|
<span class="d-flex"><i class="mdi mdi-18px mdi-table-remove text-light pr-1" /> {{ $t('word.delete') }}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -113,6 +125,8 @@ export default {
|
|||||||
...mapActions({
|
...mapActions({
|
||||||
addNotification: 'notifications/addNotification',
|
addNotification: 'notifications/addNotification',
|
||||||
changeBreadcrumbs: 'workspaces/changeBreadcrumbs',
|
changeBreadcrumbs: 'workspaces/changeBreadcrumbs',
|
||||||
|
addLoadingElement: 'workspaces/addLoadingElement',
|
||||||
|
removeLoadingElement: 'workspaces/removeLoadingElement',
|
||||||
removeTabs: 'workspaces/removeTabs',
|
removeTabs: 'workspaces/removeTabs',
|
||||||
newTab: 'workspaces/newTab'
|
newTab: 'workspaces/newTab'
|
||||||
}),
|
}),
|
||||||
@ -290,6 +304,12 @@ export default {
|
|||||||
this.closeContext();
|
this.closeContext();
|
||||||
},
|
},
|
||||||
async toggleTrigger () {
|
async toggleTrigger () {
|
||||||
|
this.addLoadingElement({
|
||||||
|
name: this.selectedMisc.name,
|
||||||
|
schema: this.selectedSchema,
|
||||||
|
type: 'trigger'
|
||||||
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { status, response } = await Triggers.toggleTrigger({
|
const { status, response } = await Triggers.toggleTrigger({
|
||||||
uid: this.selectedWorkspace,
|
uid: this.selectedWorkspace,
|
||||||
@ -304,6 +324,44 @@ export default {
|
|||||||
catch (err) {
|
catch (err) {
|
||||||
this.addNotification({ status: 'error', message: err.stack });
|
this.addNotification({ status: 'error', message: err.stack });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.removeLoadingElement({
|
||||||
|
name: this.selectedMisc.name,
|
||||||
|
schema: this.selectedSchema,
|
||||||
|
type: 'trigger'
|
||||||
|
});
|
||||||
|
|
||||||
|
this.closeContext();
|
||||||
|
this.$emit('reload');
|
||||||
|
},
|
||||||
|
async toggleScheduler () {
|
||||||
|
this.addLoadingElement({
|
||||||
|
name: this.selectedMisc.name,
|
||||||
|
schema: this.selectedSchema,
|
||||||
|
type: 'scheduler'
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { status, response } = await Schedulers.toggleScheduler({
|
||||||
|
uid: this.selectedWorkspace,
|
||||||
|
schema: this.selectedSchema,
|
||||||
|
scheduler: this.selectedMisc.name,
|
||||||
|
enabled: this.selectedMisc.enabled
|
||||||
|
});
|
||||||
|
|
||||||
|
if (status !== 'success')
|
||||||
|
this.addNotification({ status: 'error', message: response });
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
this.addNotification({ status: 'error', message: err.stack });
|
||||||
|
}
|
||||||
|
|
||||||
|
this.removeLoadingElement({
|
||||||
|
name: this.selectedMisc.name,
|
||||||
|
schema: this.selectedSchema,
|
||||||
|
type: 'scheduler'
|
||||||
|
});
|
||||||
|
|
||||||
this.closeContext();
|
this.closeContext();
|
||||||
this.$emit('reload');
|
this.$emit('reload');
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,8 @@
|
|||||||
@contextmenu.prevent="showMiscContext($event, {...trigger, type: 'trigger'})"
|
@contextmenu.prevent="showMiscContext($event, {...trigger, type: 'trigger'})"
|
||||||
>
|
>
|
||||||
<a class="table-name">
|
<a class="table-name">
|
||||||
<i class="table-icon mdi mdi-table-cog mdi-18px mr-1" />
|
<div v-if="checkLoadingStatus(trigger.name, 'trigger')" class="icon loading mr-1" />
|
||||||
|
<i v-else class="table-icon mdi mdi-table-cog mdi-18px mr-1" />
|
||||||
<span v-html="highlightWord(trigger.name)" />
|
<span v-html="highlightWord(trigger.name)" />
|
||||||
</a>
|
</a>
|
||||||
<div
|
<div
|
||||||
@ -211,7 +212,8 @@
|
|||||||
@contextmenu.prevent="showMiscContext($event, {...scheduler, type: 'scheduler'})"
|
@contextmenu.prevent="showMiscContext($event, {...scheduler, type: 'scheduler'})"
|
||||||
>
|
>
|
||||||
<a class="table-name">
|
<a class="table-name">
|
||||||
<i class="table-icon mdi mdi-calendar-clock mdi-18px mr-1" />
|
<div v-if="checkLoadingStatus(scheduler.name, 'scheduler')" class="icon loading mr-1" />
|
||||||
|
<i v-else class="table-icon mdi mdi-calendar-clock mdi-18px mr-1" />
|
||||||
<span v-html="highlightWord(scheduler.name)" />
|
<span v-html="highlightWord(scheduler.name)" />
|
||||||
</a>
|
</a>
|
||||||
<div
|
<div
|
||||||
|
@ -17,4 +17,8 @@ export default class {
|
|||||||
static createScheduler (params) {
|
static createScheduler (params) {
|
||||||
return ipcRenderer.invoke('create-scheduler', params);
|
return ipcRenderer.invoke('create-scheduler', params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static toggleScheduler (params) {
|
||||||
|
return ipcRenderer.invoke('toggle-scheduler', params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user