fix: chat query (#1170)

Co-authored-by: josh <josh@afterima.ge>
This commit is contained in:
Nicklas Scharpff 2025-09-09 00:29:04 +02:00 committed by GitHub
parent d3b3449eb8
commit f2320bf321
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 879 additions and 145 deletions

View file

@ -34,7 +34,7 @@ export async function GET(
return new ChatSDKError('unauthorized:chat').toResponse();
}
let chat: Chat;
let chat: Chat | null;
try {
chat = await getChatById({ id: chatId });

View file

@ -18,6 +18,7 @@ import {
saveChat,
saveMessages,
} from '@/lib/db/queries';
import { updateChatLastContextById } from '@/lib/db/queries';
import { convertToUIMessages, generateUUID } from '@/lib/utils';
import { generateTitleFromUserMessage } from '../../actions';
import { createDocument } from '@/lib/ai/tools/create-document';
@ -208,6 +209,17 @@ export async function POST(request: Request) {
chatId: id,
})),
});
if (finalUsage) {
try {
await updateChatLastContextById({
chatId: id,
context: finalUsage,
});
} catch (err) {
console.warn('Unable to persist last usage for chat', id, err);
}
}
},
onError: () => {
return 'Oops, an error occurred!';
@ -251,7 +263,7 @@ export async function DELETE(request: Request) {
const chat = await getChatById({ id });
if (chat.userId !== session.user.id) {
if (chat?.userId !== session.user.id) {
return new ChatSDKError('forbidden:chat').toResponse();
}

View file

@ -7,6 +7,7 @@ import { getChatById, getMessagesByChatId } from '@/lib/db/queries';
import { DataStreamHandler } from '@/components/data-stream-handler';
import { DEFAULT_CHAT_MODEL } from '@/lib/ai/models';
import { convertToUIMessages } from '@/lib/utils';
import { LanguageModelV2Usage } from '@ai-sdk/provider';
export default async function Page(props: { params: Promise<{ id: string }> }) {
const params = await props.params;
@ -53,6 +54,7 @@ export default async function Page(props: { params: Promise<{ id: string }> }) {
isReadonly={session?.user?.id !== chat.userId}
session={session}
autoResume={true}
initialLastContext={chat.lastContext ?? undefined}
/>
<DataStreamHandler />
</>
@ -69,6 +71,7 @@ export default async function Page(props: { params: Promise<{ id: string }> }) {
isReadonly={session?.user?.id !== chat.userId}
session={session}
autoResume={true}
initialLastContext={chat.lastContext ?? undefined}
/>
<DataStreamHandler />
</>