diff --git a/src/components/ConversationView/index.tsx b/src/components/ConversationView/index.tsx index 9e9d26e..b131c6e 100644 --- a/src/components/ConversationView/index.tsx +++ b/src/components/ConversationView/index.tsx @@ -1,5 +1,5 @@ import axios from "axios"; -import { head, last } from "lodash-es"; +import { first, head, last } from "lodash-es"; import { useEffect, useRef, useState } from "react"; import { toast } from "react-hot-toast"; import { @@ -162,7 +162,7 @@ const ConversationView = () => { } usageMessageList.unshift({ id: generateUUID(), - createdAt: Date.now(), + createdAt: first(usageMessageList)?.createdAt || Date.now(), creatorRole: CreatorRole.System, content: prompt, } as Message); diff --git a/src/pages/api/usage.ts b/src/pages/api/usage.ts index 3e2dfc5..7f8cdff 100644 --- a/src/pages/api/usage.ts +++ b/src/pages/api/usage.ts @@ -12,23 +12,40 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) const conversation = req.body.conversation as Conversation; const messages = req.body.messages as Message[]; try { - await prisma.chat.create({ - data: { + const chat = await prisma.chat.findUnique({ + where: { id: conversation.id, - createdAt: new Date(conversation.createdAt), - ctx: {}, - messages: { - create: messages.map((message) => ({ - id: message.id, - createdAt: new Date(message.createdAt), - role: message.creatorRole, - content: message.content, - upvote: true, - downvote: false, - })), - }, }, }); + if (chat) { + await prisma.message.createMany({ + data: messages.map((message) => ({ + chatId: chat.id, + createdAt: new Date(message.createdAt), + role: message.creatorRole, + content: message.content, + upvote: true, + downvote: false, + })), + }); + } else { + await prisma.chat.create({ + data: { + id: conversation.id, + createdAt: new Date(conversation.createdAt), + ctx: {}, + messages: { + create: messages.map((message) => ({ + createdAt: new Date(message.createdAt), + role: message.creatorRole, + content: message.content, + upvote: true, + downvote: false, + })), + }, + }, + }); + } } catch (err) { console.error(err); }