import { z } from 'zod';
import type { OutboxHandler } from '../types.js';

const payloadSchema = z.object({ jobId: z.string() });

type Payload = z.infer<typeof payloadSchema>;

export const translationJobEnqueued: OutboxHandler<Payload> = {
  type: 'TRANSLATION_JOB_ENQUEUED',
  payloadSchema,
  async handle(ctx, payload, event) {
    if (!ctx.TRANSLATION_QUEUE) {
      const msg = '[outbox] TRANSLATION_QUEUE not configured for TRANSLATION_JOB_ENQUEUED';
      console.warn(
        JSON.stringify({
          event: 'outbox_binding_missing',
          binding: 'TRANSLATION_QUEUE',
          outboxId: event.id,
        }),
      );
      if (ctx.strict !== false) throw new Error(msg);
      return;
    }

    await ctx.TRANSLATION_QUEUE.send({ jobId: payload.jobId });
  },
};
