feat(core-shared/jobs): PayloadJobQueue
This commit is contained in:
20
packages/core-shared/src/jobs/payload-job-queue.ts
Normal file
20
packages/core-shared/src/jobs/payload-job-queue.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import type { Payload } from "payload";
|
||||
import type { IJobQueue } from "./job-queue.interface";
|
||||
|
||||
export class PayloadJobQueue implements IJobQueue {
|
||||
constructor(private readonly payload: Payload) {}
|
||||
|
||||
async enqueue<T>(
|
||||
taskSlug: string,
|
||||
input: T,
|
||||
options?: { runAt?: Date },
|
||||
): Promise<{ jobId: string }> {
|
||||
const result = await this.payload.jobs.queue({
|
||||
task: taskSlug,
|
||||
input: input as never,
|
||||
waitUntil: options?.runAt,
|
||||
} as never);
|
||||
const jobId = (result as { id: string | number }).id;
|
||||
return { jobId: String(jobId) };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user