import type { ScheduledNote } from "@/models/entities/scheduled-note.js";
import { createQueueProducer, defaultJobOpts } from "../index.js";

type PublishScheduledNoteJobData = {
	scheduledNoteId: string;
};

const scheduledNoteSystemQueue =
	createQueueProducer<PublishScheduledNoteJobData>("system");

export async function enqueueScheduledNote(
	scheduledNote: Pick<ScheduledNote, "id" | "scheduledAt">,
) {
	await scheduledNoteSystemQueue.add(
		"publishScheduledNote",
		{ scheduledNoteId: scheduledNote.id },
		{
			...defaultJobOpts,
			delay: Math.max(0, scheduledNote.scheduledAt.getTime() - Date.now()),
			jobId: `scheduledNote:${scheduledNote.id}`,
		},
	);
}
