Spaces:
Running
Running
File size: 1,696 Bytes
98051f8 3b05d51 98051f8 3b05d51 c202241 d7b4e1d 8aab1a5 d7b4e1d 3b05d51 c554635 c85ac8f c554635 3b05d51 c554635 3b05d51 c554635 3b05d51 c554635 3b05d51 8aab1a5 3b05d51 d7b4e1d 3b05d51 c554635 8aab1a5 566c2fc c554635 8aab1a5 98051f8 8aab1a5 98051f8 8aab1a5 a95d8a5 d72b096 a95d8a5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import type { RequestHandler } from "./$types";
import { collections } from "$lib/server/database";
import { ObjectId } from "mongodb";
import { error, redirect } from "@sveltejs/kit";
import { base } from "$app/paths";
import { z } from "zod";
import type { Message } from "$lib/types/Message";
import { models, validateModel } from "$lib/server/models";
import { authCondition } from "$lib/server/auth";
export const POST: RequestHandler = async ({ locals, request }) => {
const body = await request.text();
let title = "";
let messages: Message[] = [];
const values = z
.object({
fromShare: z.string().optional(),
model: validateModel(models),
})
.parse(JSON.parse(body));
if (values.fromShare) {
const conversation = await collections.sharedConversations.findOne({
_id: values.fromShare,
});
if (!conversation) {
throw error(404, "Conversation not found");
}
title = conversation.title;
messages = conversation.messages;
values.model = conversation.model;
}
const res = await collections.conversations.insertOne({
_id: new ObjectId(),
title:
title ||
"Untitled " + ((await collections.conversations.countDocuments(authCondition(locals))) + 1),
messages,
model: values.model,
createdAt: new Date(),
updatedAt: new Date(),
...(locals.user ? { userId: locals.user._id } : { sessionId: locals.sessionId }),
...(values.fromShare ? { meta: { fromShareId: values.fromShare } } : {}),
});
return new Response(
JSON.stringify({
conversationId: res.insertedId.toString(),
}),
{ headers: { "Content-Type": "application/json" } }
);
};
export const GET: RequestHandler = async () => {
throw redirect(302, `${base}/`);
};
|