import { define } from "../../utils.ts";
import { startingDeck } from "../../lib/game.ts";
import { createHero, isClassId } from "../../lib/heroes.ts";
export const handler = define.handlers({
async POST(ctx) {
const user = ctx.state.user;
if (!user) return new Response("Unauthorized", { status: 401 });
let body: unknown;
try {
body = await ctx.req.json();
} catch {
return Response.json({ error: "Invalid JSON." }, { status: 400 });
}
const { name, klass } = (body ?? {}) as { name?: unknown; klass?: unknown };
const heroName = typeof name === "string" ? name.trim().slice(0, 24) : "";
if (heroName.length < 2) {
return Response.json(
{ error: "Hero name must be at least 2 characters." },
{ status: 400 },
);
}
if (!isClassId(klass)) {
return Response.json({ error: "Choose a class." }, { status: 400 });
}
const hero = await createHero(
user.id,
heroName,
klass,
startingDeck(klass),
);
return Response.json({ hero });
},
});