mirror of
https://github.com/ItzCrazyKns/Perplexica.git
synced 2025-12-18 01:28:15 +00:00
Adding user session for history
This commit is contained in:
@@ -1,10 +1,47 @@
|
||||
import db from '@/lib/db';
|
||||
import { chats } from '@/lib/db/schema';
|
||||
import { eq, sql} from 'drizzle-orm';
|
||||
|
||||
export const GET = async (req: Request) => {
|
||||
try {
|
||||
let chats = await db.query.chats.findMany();
|
||||
chats = chats.reverse();
|
||||
return Response.json({ chats: chats }, { status: 200 });
|
||||
// get header from request
|
||||
const headers = await req.headers;
|
||||
let userSessionId = headers.get('user-session-id')?.toString() ?? '';
|
||||
|
||||
if (userSessionId == '') {
|
||||
return Response.json({ chats: {} }, { status: 200 });
|
||||
}
|
||||
|
||||
let chatsRes = await db.query.chats.findMany({
|
||||
where: eq(chats.userSessionId, userSessionId),
|
||||
});
|
||||
|
||||
chatsRes = chatsRes.reverse();
|
||||
// Keep only the latest 20 records in the database. Delete older records.
|
||||
let maxRecordLimit = 20;
|
||||
if (chatsRes.length > maxRecordLimit) {
|
||||
const deleteChatsQuery = sql`DELETE FROM chats
|
||||
WHERE userSessionId = ${userSessionId} AND (
|
||||
timestamp IS NULL OR
|
||||
timestamp NOT in (
|
||||
SELECT timestamp FROM chats
|
||||
WHERE userSessionId = ${userSessionId}
|
||||
ORDER BY timestamp DESC
|
||||
LIMIT ${maxRecordLimit}
|
||||
)
|
||||
)
|
||||
`;
|
||||
await db.run(deleteChatsQuery);
|
||||
// Delete messages that no longer link with the chat from the database.
|
||||
const deleteMessagesQuery = sql`DELETE FROM messages
|
||||
WHERE chatId NOT IN (
|
||||
SELECT id FROM chats
|
||||
)
|
||||
`;
|
||||
await db.run(deleteMessagesQuery);
|
||||
}
|
||||
|
||||
return Response.json({ chats: chatsRes }, { status: 200 });
|
||||
} catch (err) {
|
||||
console.error('Error in getting chats: ', err);
|
||||
return Response.json(
|
||||
|
||||
Reference in New Issue
Block a user