mirror of
https://github.com/documenso/documenso.git
synced 2025-11-16 09:41:35 +10:00
feat: add job queue
This commit is contained in:
34
packages/lib/server-only/queue/job.ts
Normal file
34
packages/lib/server-only/queue/job.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import type { WorkHandler } from 'pg-boss';
|
||||
|
||||
import { initQueue } from '.';
|
||||
import {
|
||||
type SendDocumentOptions as SendCompletedDocumentOptions,
|
||||
sendCompletedEmail,
|
||||
} from '../document/send-completed-email';
|
||||
|
||||
type JobOptions = {
|
||||
'send-completed-email': SendCompletedDocumentOptions;
|
||||
};
|
||||
|
||||
export const jobHandlers: {
|
||||
[K in keyof JobOptions]: WorkHandler<JobOptions[K]>;
|
||||
} = {
|
||||
'send-completed-email': async ({ data }) => {
|
||||
await sendCompletedEmail({
|
||||
documentId: data.documentId,
|
||||
requestMetadata: data.requestMetadata,
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
export const queueJob = async ({
|
||||
job,
|
||||
args,
|
||||
}: {
|
||||
job: keyof JobOptions;
|
||||
args?: JobOptions[keyof JobOptions];
|
||||
}) => {
|
||||
const queue = await initQueue();
|
||||
|
||||
await queue.send(job, args ?? {});
|
||||
};
|
||||
Reference in New Issue
Block a user