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

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

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

  if (
    typeof user !== "string" ||
    user.length > 20 ||
    user.length < 17 ||
    user.match(/\D/)
  )
    return jsonError("Invalid user id", 400);

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

  await context.env.D1.prepare(
    "INSERT INTO et_strikes (created_at, created_by, id, reason, user) VALUES (?1, ?2, ?3, ?4, ?5); UPDATE et_members SET points = points - 100 WHERE id = ?5;",
  )
    .bind(now, actingUser, id, reason, user)
    .run();

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