coyotte508's picture
coyotte508 HF staff
🔧 Configure a base path (#47)
67867a9 unverified
raw
history blame
1.39 kB
import { base } from '$app/paths';
import { SHARE_BASE_URL } from '$env/static/private';
import { collections } from '$lib/server/database.js';
import type { SharedConversation } from '$lib/types/SharedConversation.js';
import { sha256 } from '$lib/utils/sha256.js';
import { error } from '@sveltejs/kit';
import { ObjectId } from 'mongodb';
import { nanoid } from 'nanoid';
export async function POST({ params, url, locals }) {
const conversation = await collections.conversations.findOne({
_id: new ObjectId(params.id),
sessionId: locals.sessionId
});
if (!conversation) {
throw error(404, 'Conversation not found');
}
const hash = await sha256(JSON.stringify(conversation.messages));
const existingShare = await collections.sharedConversations.findOne({ hash });
if (existingShare) {
return new Response(
JSON.stringify({
url: url.origin + `${base}/r/${existingShare._id}`
}),
{ headers: { 'Content-Type': 'application/json' } }
);
}
const shared: SharedConversation = {
_id: nanoid(7),
createdAt: new Date(),
messages: conversation.messages,
hash,
updatedAt: new Date(),
title: conversation.title
};
await collections.sharedConversations.insertOne(shared);
return new Response(
JSON.stringify({
url: (SHARE_BASE_URL || `${url.origin}${base}`) + `/r/${shared._id}`
}),
{ headers: { 'Content-Type': 'application/json' } }
);
}