게시판오목으로 이해하는 자기대국과 모방 학습예제 소스

예제 소스

오목으로 이해하는 자기대국과 모방 학습 · 파일 59개

route.ts

import { NextRequest, NextResponse } from "next/server";
import { createGame, getLatestPlayingForGuest } from "@/lib/db";
import { DEFAULT_SIZE, PLAY_SIZES } from "@/lib/board";

export const runtime = "nodejs";

/** POST: 새 대국. GET ?guestId=: 이어둘 대국 */
export async function GET(req: NextRequest) {
  const guestId = req.nextUrl.searchParams.get("guestId")?.trim();
  if (!guestId) {
    return NextResponse.json({ error: "guestId required" }, { status: 400 });
  }
  const game = getLatestPlayingForGuest(guestId);
  return NextResponse.json({ game });
}

export async function POST(req: NextRequest) {
  const body = (await req.json().catch(() => ({}))) as {
    guestId?: string;
    size?: number;
  };
  const guestId = body.guestId?.trim();
  if (!guestId) {
    return NextResponse.json({ error: "guestId required" }, { status: 400 });
  }
  const size = Number(body.size ?? DEFAULT_SIZE);
  if (!(PLAY_SIZES as readonly number[]).includes(size)) {
    return NextResponse.json({ error: `unsupported size: ${size}` }, { status: 400 });
  }
  const game = createGame(guestId, size);
  return NextResponse.json({ game });
}