Optimize database query for newly created chats (#1251)

This commit is contained in:
Shkumbin Hasani 2025-11-01 01:18:05 +01:00 committed by GitHub
parent 93939ee1f2
commit f07f816240
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -37,6 +37,7 @@ import {
saveMessages,
updateChatLastContextById,
} from "@/lib/db/queries";
import type { DBMessage } from "@/lib/db/schema";
import { ChatSDKError } from "@/lib/errors";
import type { ChatMessage } from "@/lib/types";
import type { AppUsage } from "@/lib/usage";
@ -125,11 +126,14 @@ export async function POST(request: Request) {
}
const chat = await getChatById({ id });
let messagesFromDb: DBMessage[] = [];
if (chat) {
if (chat.userId !== session.user.id) {
return new ChatSDKError("forbidden:chat").toResponse();
}
// Only fetch messages if chat already exists
messagesFromDb = await getMessagesByChatId({ id });
} else {
const title = await generateTitleFromUserMessage({
message,
@ -141,9 +145,9 @@ export async function POST(request: Request) {
title,
visibility: selectedVisibilityType,
});
// New chat - no need to fetch messages, it's empty
}
const messagesFromDb = await getMessagesByChatId({ id });
const uiMessages = [...convertToUIMessages(messagesFromDb), message];
const { longitude, latitude, city, country } = geolocation(request);