Skip to content

Commit af168af

Browse files
committed
refactor: change endpoint place
1 parent 76f18ff commit af168af

3 files changed

Lines changed: 39 additions & 26 deletions

File tree

src/client/components/worker/useCronPreview.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { useEffect, useState } from 'react';
22
import dayjs from 'dayjs';
33
import { trpc } from '@/api/trpc';
44
import { useEvent } from '@/hooks/useEvent';
5+
import { useCurrentWorkspaceId } from '@/store/user';
56

67
interface UseCronPreviewOptions {
78
cronExpression?: string;
@@ -25,8 +26,9 @@ export function useCronPreview({
2526
}: UseCronPreviewOptions): UseCronPreviewResult {
2627
const [previewTimes, setPreviewTimes] = useState<string[]>([]);
2728
const [error, setError] = useState<string | null>(null);
29+
const workspaceId = useCurrentWorkspaceId();
2830

29-
const cronPreviewMutation = trpc.global.previewCron.useMutation({
31+
const cronPreviewMutation = trpc.workspace.previewCron.useMutation({
3032
onSuccess: (data) => {
3133
const runs = (data.nextRuns ?? []).map((run) =>
3234
dayjs(run).format('YYYY-MM-DD HH:mm:ss (z)')
@@ -70,6 +72,7 @@ export function useCronPreview({
7072
}
7173

7274
await cronPreviewMutation.mutateAsync({
75+
workspaceId,
7376
cronExpression: expression,
7477
count,
7578
});

src/server/trpc/routers/global.ts

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { publicProcedure, router } from '../trpc.js';
33
import { OPENAPI_TAG } from '../../utils/const.js';
44
import { env } from '../../utils/env.js';
55
import dayjs from 'dayjs';
6-
import { Cron } from 'croner';
76

87
export const globalRouter = router({
98
config: publicProcedure
@@ -59,28 +58,4 @@ export const globalRouter = router({
5958
observability: env.observability,
6059
};
6160
}),
62-
previewCron: publicProcedure
63-
.input(
64-
z.object({
65-
cronExpression: z.string(),
66-
count: z.number().default(5),
67-
})
68-
)
69-
.output(
70-
z.object({
71-
nextRuns: z.string().array(),
72-
})
73-
)
74-
.mutation(async ({ input, ctx }) => {
75-
const { cronExpression, count } = input;
76-
77-
const cron = new Cron(cronExpression, {
78-
timezone: ctx.timezone,
79-
paused: true,
80-
});
81-
82-
return {
83-
nextRuns: cron.nextRuns(count).map((run) => run.toISOString()),
84-
};
85-
}),
8661
});

src/server/trpc/routers/workspace.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import {
3838
sendInvitationEmail,
3939
} from '../../model/invitation.js';
4040
import { workspaceConfigRouter } from './workspaceConfig.js';
41+
import Cron from 'croner';
4142

4243
export const workspaceRouter = router({
4344
create: protectProedure
@@ -599,6 +600,40 @@ export const workspaceRouter = router({
599600
},
600601
});
601602
}),
603+
previewCron: workspaceProcedure
604+
.input(
605+
z.object({
606+
cronExpression: z.string(),
607+
count: z.number().default(5),
608+
})
609+
)
610+
.output(
611+
z.object({
612+
nextRuns: z.string().array(),
613+
})
614+
)
615+
.mutation(async ({ input, ctx }) => {
616+
const { workspaceId, cronExpression, count } = input;
617+
618+
const workspace = await prisma.workspace.findUniqueOrThrow({
619+
where: {
620+
id: workspaceId,
621+
},
622+
});
623+
624+
const timezone =
625+
get(workspace, ['settings', 'timezone']) || ctx.timezone || 'utc';
626+
627+
const cron = new Cron(cronExpression, {
628+
timezone,
629+
paused: true,
630+
});
631+
632+
return {
633+
nextRuns: cron.nextRuns(count).map((run) => run.toISOString()),
634+
};
635+
}),
636+
602637
config: workspaceConfigRouter,
603638
});
604639

0 commit comments

Comments
 (0)