feat: ghetto durable compute

This commit is contained in:
Mythie
2024-05-16 15:44:39 +10:00
parent 61827ad729
commit 991f808890
20 changed files with 847 additions and 151 deletions

View File

@ -1,23 +1,47 @@
import { z } from 'zod';
import { sendConfirmationToken } from '../../server-only/user/send-confirmation-token';
import { jobsClient } from '../client';
import type { JobClient } from '../client/client';
jobsClient.defineJob({
id: 'send.confirmation.email',
name: 'Send Confirmation Email',
version: '1.0.0',
trigger: {
name: 'send.confirmation.email',
schema: z.object({
email: z.string().email(),
force: z.boolean().optional(),
}),
},
handler: async ({ payload }) => {
await sendConfirmationToken({
email: payload.email,
force: payload.force,
});
},
});
export const registerSendConfirmationEmailJob = (client: JobClient) => {
client.defineJob({
id: 'send.confirmation.email',
name: 'Send Confirmation Email',
version: '1.0.0',
trigger: {
name: 'send.confirmation.email',
schema: z.object({
email: z.string().email(),
force: z.boolean().optional(),
}),
},
handler: async ({ payload, io }) => {
console.log('---- start job ----');
// eslint-disable-next-line @typescript-eslint/require-await
const result = await io.runTask('console-log-1', async () => {
console.log('Task 1');
return 5;
});
console.log({ result });
console.log('always runs');
// eslint-disable-next-line @typescript-eslint/require-await
await io.runTask('console-log-2', async () => {
await Promise.resolve(null);
throw new Error('dang2');
});
console.log('---- end job ----');
// throw new Error('dang')
await sendConfirmationToken({
email: payload.email,
force: payload.force,
});
},
});
};