export async function onRequestPost(context: RequestContext) {
  const { body } = context.data;

  if (
    !Array.isArray(body) ||
    body.find((attachment) => typeof attachment !== "string")
  )
    return new Response(
      '{"error":"Request body must be an array of strings"}',
      {
        headers: {
          "content-type": "application/json",
        },
        status: 400,
      },
    );

  if (body.length > 3)
    return new Response('{"error":"Too many video ids"}', {
      headers: {
        "content-type": "application/json",
      },
      status: 400,
    });

  const kvPromises = [];

  for (const attachment of body)
    kvPromises.push(context.env.DATA.get(`videoprocessing_${attachment}`));

  const kvResults = await Promise.allSettled(kvPromises);

  if (kvResults.find((result) => result.status === "rejected"))
    return new Response('{"error":"Failed to check status of attachments"}', {
      headers: {
        "content-type": "application/json",
      },
      status: 500,
    });

  return new Response(null, {
    status: kvResults.find((result) => result !== null) ? 409 : 204,
  });
}