diff --git a/apps/dokploy/server/api/routers/schedule.ts b/apps/dokploy/server/api/routers/schedule.ts index d69760124..a7417a92c 100644 --- a/apps/dokploy/server/api/routers/schedule.ts +++ b/apps/dokploy/server/api/routers/schedule.ts @@ -25,7 +25,7 @@ import { asc, desc, eq } from "drizzle-orm"; import { z } from "zod"; import { audit } from "@/server/api/utils/audit"; import { assertScheduledJobLimit } from "@/server/api/utils/plan-limits"; -import { removeJob, schedule } from "@/server/utils/backup"; +import { removeJob, schedule, updateJob } from "@/server/utils/backup"; import { createTRPCRouter, protectedProcedure } from "../trpc"; export const scheduleRouter = createTRPCRouter({ @@ -130,7 +130,7 @@ export const scheduleRouter = createTRPCRouter({ if (IS_CLOUD) { if (updatedSchedule?.enabled) { - schedule({ + await updateJob({ scheduleId: updatedSchedule.scheduleId, type: "schedule", cronSchedule: updatedSchedule.cronExpression, @@ -141,6 +141,7 @@ export const scheduleRouter = createTRPCRouter({ cronSchedule: updatedSchedule.cronExpression, scheduleId: updatedSchedule.scheduleId, type: "schedule", + timezone: updatedSchedule.timezone, }); } } else { @@ -185,6 +186,7 @@ export const scheduleRouter = createTRPCRouter({ cronSchedule: scheduleItem.cronExpression, scheduleId: scheduleItem.scheduleId, type: "schedule", + timezone: scheduleItem.timezone, }); } else { removeScheduleJob(scheduleItem.scheduleId); diff --git a/apps/schedules/src/index.ts b/apps/schedules/src/index.ts index a5f0fd47c..28eacbe1c 100644 --- a/apps/schedules/src/index.ts +++ b/apps/schedules/src/index.ts @@ -60,6 +60,7 @@ app.post("/update-backup", zValidator("json", jobQueueSchema), async (c) => { scheduleId: data.scheduleId, type: "schedule", cronSchedule: job.pattern || "", + timezone: job.tz || data.timezone, }); } else if (data.type === "volume-backup") { result = await removeJob({ diff --git a/apps/schedules/src/queue.ts b/apps/schedules/src/queue.ts index 7b0c48315..3d9b2c802 100644 --- a/apps/schedules/src/queue.ts +++ b/apps/schedules/src/queue.ts @@ -66,9 +66,10 @@ export const removeJob = async (data: QueueJob) => { return result; } if (data.type === "schedule") { - const { scheduleId, cronSchedule } = data; + const { scheduleId, cronSchedule, timezone } = data; const result = await jobQueue.removeRepeatable(scheduleId, { pattern: cronSchedule, + tz: timezone || "UTC", }); return result; }