narasiahli-be/plan/old/route-chat-history.ts

106 lines
2.7 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import getDatabase from '@/lib/database';
interface ChatSession {
id: string;
session_id: string;
user_id: string;
agent_id: string;
title: string;
message_count: number;
created_at: string;
updated_at: string;
}
interface ChatMessage {
id: string;
session_id: string;
message_type: string;
content: string;
created_at: string;
}
// GET - Get session details by id
export async function GET(
request: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
try {
const { id } = await params;
const db = getDatabase();
if (!id) {
return NextResponse.json({ error: 'ID is required' }, { status: 400 });
}
// Get session details by id
const session = db.prepare(`
SELECT * FROM chat_sessions
WHERE id = ?
`).get(id) as ChatSession | undefined;
if (!session) {
return NextResponse.json({ error: 'Session not found' }, { status: 404 });
}
// Get messages for this session
const messages = db.prepare(`
SELECT * FROM chat_messages
WHERE session_id = ?
ORDER BY created_at ASC
`).all(session.session_id) as ChatMessage[];
return NextResponse.json({
success: true,
session,
messages
}, { status: 200 });
} catch (error) {
console.error('Error fetching session details:', error);
return NextResponse.json({ error: 'Internal server error' }, { status: 500 });
}
}
// DELETE - Delete a specific chat session
export async function DELETE(
request: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
try {
const { id } = await params;
const { searchParams } = new URL(request.url);
const user_id = searchParams.get('user_id');
const db = getDatabase();
if (!id) {
return NextResponse.json({ error: 'ID is required' }, { status: 400 });
}
if (!user_id) {
return NextResponse.json({ error: 'User ID is required' }, { status: 400 });
}
// Check if session exists and belongs to user
const session = db.prepare(`
SELECT id FROM chat_sessions
WHERE id = ? AND user_id = ?
`).get(id, user_id) as { id: string } | undefined;
if (!session) {
return NextResponse.json({ error: 'Session not found or access denied' }, { status: 404 });
}
// Delete session (messages will be deleted automatically due to CASCADE)
db.prepare('DELETE FROM chat_sessions WHERE id = ?').run(id);
return NextResponse.json({
success: true,
message: 'Session deleted successfully'
}, { status: 200 });
} catch (error) {
console.error('Error deleting session:', error);
return NextResponse.json({ error: 'Internal server error' }, { status: 500 });
}
}