import { NextRequest, NextResponse } from 'next/server'; import { getDatabase } from '@/lib/db/mongodb'; const ALLOWED_COLLECTIONS = [ 'accessroles', 'aclentries', 'actions', 'agentcategories', 'agents', 'assistants', 'balances', 'banners', 'conversations', 'conversationtags', 'files', 'groups', 'keys', 'memoryentries', 'messages', 'pluginauths', 'presets', 'projects', 'promptgroups', 'prompts', 'roles', 'sessions', 'sharedlinks', 'tokens', 'toolcalls', 'transactions', 'users' ]; export async function GET( request: NextRequest, { params }: { params: Promise<{ collection: string }> } ) { const { collection } = await params; try { if (!ALLOWED_COLLECTIONS.includes(collection)) { return NextResponse.json( { error: 'Collection non autorisée' }, { status: 400 } ); } const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const limit = parseInt(searchParams.get('limit') || '20'); const filter = JSON.parse(searchParams.get('filter') || '{}'); const db = await getDatabase(); const skip = (page - 1) * limit; const [data, total] = await Promise.all([ db.collection(collection) .find(filter) .skip(skip) .limit(limit) .sort({ createdAt: -1 }) .toArray(), db.collection(collection).countDocuments(filter) ]); return NextResponse.json({ data, total, page, limit, totalPages: Math.ceil(total / limit) }); } catch (error) { console.error(`Erreur lors de la récupération de ${collection}:`, error); return NextResponse.json( { error: 'Erreur serveur' }, { status: 500 } ); } }