import { NextResponse } from "next/server"; import { Logger } from "@/lib/Logger"; import { botRpc, errorResponse, readJsonBody, requireSession, requireString } from "@/lib/api"; interface QueueSetBody { serverId?: unknown; newQueue?: unknown; } export async function POST(request: Request) { try { const sessionResult = await requireSession(); if (!sessionResult.ok) return sessionResult.response; const userId = sessionResult.session.user.id; const bodyResult = await readJsonBody(request); if (!bodyResult.ok) return bodyResult.response; const serverIdResult = requireString(bodyResult.data.serverId, "serverId"); if (!serverIdResult.ok) return serverIdResult.response; const newQueue = bodyResult.data.newQueue; if (!Array.isArray(newQueue)) return errorResponse("newQueue 정보가 필요합니다."); const { status, body } = await botRpc({ channel: "queue:set", payload: { action: "queue_set", serverId: serverIdResult.value, userId, newQueue, }, timeoutMs: 5000, }); return NextResponse.json(body, { status }); } catch (error) { Logger.error(`queue/set API error: ${error instanceof Error ? error.message : String(error)}`); return errorResponse("서버 오류가 발생했습니다.", 500); } }