21 lines
577 B
TypeScript
21 lines
577 B
TypeScript
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) };
|
|
}
|
|
}
|