치지직 채팅창 인식 추가 및 주사위 횟수 증가 추가.
This commit is contained in:
36
app/api/rooms/[roomId]/consume-dice/route.ts
Normal file
36
app/api/rooms/[roomId]/consume-dice/route.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import {
|
||||
consumeDice,
|
||||
getRoom,
|
||||
notifyRoom,
|
||||
toPublicRoom,
|
||||
} from '@/lib/rooms/store';
|
||||
|
||||
export const runtime = 'nodejs';
|
||||
|
||||
type Params = { params: Promise<{ roomId: string }> };
|
||||
|
||||
export async function POST(request: Request, { params }: Params) {
|
||||
const { roomId } = await params;
|
||||
const room = getRoom(roomId);
|
||||
if (!room) {
|
||||
return NextResponse.json({ error: '방을 찾을 수 없습니다.' }, { status: 404 });
|
||||
}
|
||||
|
||||
const body = (await request.json().catch(() => ({}))) as { count?: number };
|
||||
const count = Math.max(1, Math.trunc(body.count ?? 1));
|
||||
|
||||
if (!room.settings.chzzkEnabled) {
|
||||
return NextResponse.json({ room: toPublicRoom(room), consumed: 0 });
|
||||
}
|
||||
|
||||
const updated = consumeDice(roomId, count);
|
||||
if (!updated) {
|
||||
return NextResponse.json(
|
||||
{ error: '남은 주사위가 없습니다.', room: toPublicRoom(room) },
|
||||
{ status: 409 },
|
||||
);
|
||||
}
|
||||
notifyRoom(roomId);
|
||||
return NextResponse.json({ room: toPublicRoom(updated), consumed: count });
|
||||
}
|
||||
Reference in New Issue
Block a user