import { SysCallMapping } from "../system.ts";
import { fullQueueName } from "../lib/mq_util.ts";
import { MessageQueue } from "../lib/mq.ts";

export function mqSyscalls(
  mq: MessageQueue,
): SysCallMapping {
  return {
    "mq.send": (ctx, queue: string, body: any) => {
      return mq.send(fullQueueName(ctx.plug.name!, queue), body);
    },
    "mq.batchSend": (ctx, queue: string, bodies: any[]) => {
      return mq.batchSend(fullQueueName(ctx.plug.name!, queue), bodies);
    },
    "mq.ack": (ctx, queue: string, id: string) => {
      return mq.ack(fullQueueName(ctx.plug.name!, queue), id);
    },
    "mq.batchAck": (ctx, queue: string, ids: string[]) => {
      return mq.batchAck(fullQueueName(ctx.plug.name!, queue), ids);
    },
    "mq.getQueueStats": (ctx, queue: string) => {
      return mq.getQueueStats(fullQueueName(ctx.plug.name!, queue));
    },
  };
}