VIBN Frontend for Coolify deployment
This commit is contained in:
69
app/api/debug/cursor-stats/route.ts
Normal file
69
app/api/debug/cursor-stats/route.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { adminDb } from '@/lib/firebase/admin';
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
try {
|
||||
const projectId = request.nextUrl.searchParams.get('projectId');
|
||||
|
||||
if (!projectId) {
|
||||
return NextResponse.json({ error: 'Missing projectId' }, { status: 400 });
|
||||
}
|
||||
|
||||
// Get all conversations
|
||||
const conversationsSnapshot = await adminDb
|
||||
.collection('projects')
|
||||
.doc(projectId)
|
||||
.collection('cursorConversations')
|
||||
.get();
|
||||
|
||||
const conversations = conversationsSnapshot.docs.map(doc => doc.data());
|
||||
|
||||
// Find date range
|
||||
const dates = conversations
|
||||
.filter(c => c.createdAt)
|
||||
.map(c => new Date(c.createdAt))
|
||||
.sort((a, b) => a.getTime() - b.getTime());
|
||||
|
||||
if (dates.length === 0) {
|
||||
return NextResponse.json({ error: 'No conversations with dates found' });
|
||||
}
|
||||
|
||||
const earliest = dates[0];
|
||||
const latest = dates[dates.length - 1];
|
||||
const span = Math.floor((latest.getTime() - earliest.getTime()) / (1000 * 60 * 60 * 24));
|
||||
|
||||
// Find the actual conversation names for earliest and latest
|
||||
const earliestConv = conversations.find(c =>
|
||||
new Date(c.createdAt).getTime() === earliest.getTime()
|
||||
);
|
||||
const latestConv = conversations.find(c =>
|
||||
new Date(c.createdAt).getTime() === latest.getTime()
|
||||
);
|
||||
|
||||
return NextResponse.json({
|
||||
totalConversations: conversations.length,
|
||||
dateRange: {
|
||||
earliest: earliest.toISOString(),
|
||||
latest: latest.toISOString(),
|
||||
spanDays: span
|
||||
},
|
||||
oldestConversation: {
|
||||
name: earliestConv?.name || 'Unknown',
|
||||
date: earliest.toISOString()
|
||||
},
|
||||
newestConversation: {
|
||||
name: latestConv?.name || 'Unknown',
|
||||
date: latest.toISOString()
|
||||
}
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error fetching cursor stats:', error);
|
||||
return NextResponse.json(
|
||||
{ error: 'Failed to fetch stats', details: error instanceof Error ? error.message : String(error) },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user