export const runtime = "nodejs"; import { NextResponse } from "next/server"; import { z } from "zod"; import { requireSession } from "@/lib/auth/require"; import { listConversationsForUser, getOrCreateDirectConversation, createGroupConversation } from "@/lib/chat/service"; export async function GET() { const { session, response } = await requireSession(); if (!session) return response; return NextResponse.json(await listConversationsForUser(session.user.id)); } const schema = z.union([ z.object({ peerId: z.string().min(1) }), z.object({ name: z.string().min(1), participantIds: z.array(z.string().min(1)).min(1) }), ]); export async function POST(request: Request) { const { session, response } = await requireSession(); if (!session) return response; const parsed = schema.safeParse(await request.json().catch(() => null)); if (!parsed.success) { return NextResponse.json({ error: "Некорректные данные" }, { status: 400 }); } if ("peerId" in parsed.data) { const conv = await getOrCreateDirectConversation(session.user.id, parsed.data.peerId); return NextResponse.json(conv, { status: 201 }); } const conv = await createGroupConversation(session.user.id, parsed.data.participantIds, parsed.data.name); return NextResponse.json(conv, { status: 201 }); }