import { AuthError, authenticateRequest } from "@/lib/auth/server"; import { CatalogError, listGateModels } from "@/lib/chat/catalog"; import { isModelId } from "@/lib/chat/types"; import { getPool } from "@/lib/db/pool"; import { updateLastModelId } from "@/lib/db/users"; const noStoreHeaders = { "Cache-Control": "no-store" }; export async function PATCH(request: Request): Promise { try { const user = await authenticateRequest(request); const authorization = request.headers.get("Authorization"); if (!authorization) throw new AuthError(); const body: unknown = await request.json(); const model = typeof body === "object" && body !== null && "model" in body ? body.model : undefined; if (!isModelId(model)) { return Response.json({ error: "Некорректный запрос" }, { status: 400, headers: noStoreHeaders }); } const models = await listGateModels(authorization, request.signal); if (!models.some((item) => item.id === model)) { return Response.json({ error: "Некорректный запрос" }, { status: 400, headers: noStoreHeaders }); } await updateLastModelId(getPool(), user.id, model); return Response.json({ model }, { headers: noStoreHeaders }); } catch (error) { const status = error instanceof AuthError || (error instanceof CatalogError && error.reason === "unauthorized") ? 401 : 503; return Response.json( { error: status === 401 ? "Unauthorized" : "Хранилище чатов временно недоступно" }, { status, headers: noStoreHeaders }, ); } }