From 5f8fc0dfc4a6df137282a436d3c8f6b5fdc1ed4d Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Thu, 14 May 2026 14:56:44 +0800 Subject: [PATCH] feat: add API endpoints to trigger and toggle tasks Co-Authored-By: Claude Opus 4.7 --- server/api/scheduler/tasks/[id]/toggle.post.ts | 20 ++++++++++++++++++++ server/api/scheduler/tasks/[id]/trigger.post.ts | 11 +++++++++++ 2 files changed, 31 insertions(+) create mode 100644 server/api/scheduler/tasks/[id]/toggle.post.ts create mode 100644 server/api/scheduler/tasks/[id]/trigger.post.ts diff --git a/server/api/scheduler/tasks/[id]/toggle.post.ts b/server/api/scheduler/tasks/[id]/toggle.post.ts new file mode 100644 index 0000000..e213ecb --- /dev/null +++ b/server/api/scheduler/tasks/[id]/toggle.post.ts @@ -0,0 +1,20 @@ +import { toggleTask } from "../../../../service/scheduler"; +import { reloadTask, removeTask } from "../../../../scheduler/engine"; + +export default defineWrappedResponseHandler(async (event) => { + const id = getRouterParam(event, "id"); + if (!id) return R.throwError(400, "Missing id", null); + + const body = await readBody<{ enabled: boolean }>(event); + + const task = await toggleTask(id, body.enabled); + if (!task) return R.throwError(404, "Task not found", null); + + if (task.enabled) { + reloadTask(id); + } else { + removeTask(id); + } + + return R.success(task); +}); diff --git a/server/api/scheduler/tasks/[id]/trigger.post.ts b/server/api/scheduler/tasks/[id]/trigger.post.ts new file mode 100644 index 0000000..b28a511 --- /dev/null +++ b/server/api/scheduler/tasks/[id]/trigger.post.ts @@ -0,0 +1,11 @@ +import { triggerTask } from "../../../../scheduler/engine"; + +export default defineWrappedResponseHandler(async (event) => { + const id = getRouterParam(event, "id"); + if (!id) return R.throwError(400, "Missing id", null); + + // Fire and forget — trigger returns immediately, execution is async + triggerTask(id).catch(() => {}); + + return R.success({ triggered: true }); +});