import { type } from "arktype";
import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";

const DeleteVersion = type({
  id: "string",
  versionName: "string",
}).configure(throwingArktype);

export default defineEventHandler<{ body: typeof DeleteVersion }>(
  async (h3) => {
    const allowed = await aclManager.allowSystemACL(h3, [
      "game:version:delete",
    ]);
    if (!allowed) throw createError({ statusCode: 403 });

    const body = await readDropValidatedBody(h3, DeleteVersion);

    const gameId = body.id.toString();
    const version = body.versionName.toString();

    await prisma.gameVersion.delete({
      where: {
        gameId_versionName: {
          gameId: gameId,
          versionName: version,
        },
      },
    });

    return {};
  },
);
