Optimize database query for newly created chats (#1251)
This commit is contained in:
parent
93939ee1f2
commit
f07f816240
1 changed files with 5 additions and 1 deletions
|
|
@ -37,6 +37,7 @@ import {
|
||||||
saveMessages,
|
saveMessages,
|
||||||
updateChatLastContextById,
|
updateChatLastContextById,
|
||||||
} from "@/lib/db/queries";
|
} from "@/lib/db/queries";
|
||||||
|
import type { DBMessage } from "@/lib/db/schema";
|
||||||
import { ChatSDKError } from "@/lib/errors";
|
import { ChatSDKError } from "@/lib/errors";
|
||||||
import type { ChatMessage } from "@/lib/types";
|
import type { ChatMessage } from "@/lib/types";
|
||||||
import type { AppUsage } from "@/lib/usage";
|
import type { AppUsage } from "@/lib/usage";
|
||||||
|
|
@ -125,11 +126,14 @@ export async function POST(request: Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const chat = await getChatById({ id });
|
const chat = await getChatById({ id });
|
||||||
|
let messagesFromDb: DBMessage[] = [];
|
||||||
|
|
||||||
if (chat) {
|
if (chat) {
|
||||||
if (chat.userId !== session.user.id) {
|
if (chat.userId !== session.user.id) {
|
||||||
return new ChatSDKError("forbidden:chat").toResponse();
|
return new ChatSDKError("forbidden:chat").toResponse();
|
||||||
}
|
}
|
||||||
|
// Only fetch messages if chat already exists
|
||||||
|
messagesFromDb = await getMessagesByChatId({ id });
|
||||||
} else {
|
} else {
|
||||||
const title = await generateTitleFromUserMessage({
|
const title = await generateTitleFromUserMessage({
|
||||||
message,
|
message,
|
||||||
|
|
@ -141,9 +145,9 @@ export async function POST(request: Request) {
|
||||||
title,
|
title,
|
||||||
visibility: selectedVisibilityType,
|
visibility: selectedVisibilityType,
|
||||||
});
|
});
|
||||||
|
// New chat - no need to fetch messages, it's empty
|
||||||
}
|
}
|
||||||
|
|
||||||
const messagesFromDb = await getMessagesByChatId({ id });
|
|
||||||
const uiMessages = [...convertToUIMessages(messagesFromDb), message];
|
const uiMessages = [...convertToUIMessages(messagesFromDb), message];
|
||||||
|
|
||||||
const { longitude, latitude, city, country } = geolocation(request);
|
const { longitude, latitude, city, country } = geolocation(request);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue