import { jsonError, jsonResponse } from "../../../common.js";

export async function onRequestPost(context: RequestContext) {
  const { reason, user } = context.data.body;
  const { D1 } = context.env;

  if (typeof reason !== "string") return jsonError("Invalid reason", 400);

  if (
    typeof user !== "string" ||
    user.length > 20 ||
    user.length < 17 ||
    user.match(/\D/) ||
    !(await context.data.prisma.etMember.findUnique({
      where: {
        id: user,
      },
    }))
  )
    return jsonError("Invalid user id", 400);

  const now = Date.now();
  const id = crypto.randomUUID().replaceAll("-", "");
  const actingUser = context.data.current_user.id;

  await D1.batch([
    D1.prepare(
      "INSERT INTO et_strikes (created_at, created_by, id, reason, user) VALUES (?, ?, ?, ?, ?);",
    ).bind(now, actingUser, id, reason, user),
    D1.prepare(
      "UPDATE et_members SET points = points - 100 WHERE id = ?;",
    ).bind(user),
  ]);

  return jsonResponse(
    JSON.stringify({
      created_at: Date.now(),
      created_by: context.data.current_user.id,
      id,
      reason,
      user,
    }),
  );
}
