import { NextResponse } from 'next/server'; import prisma from '@/lib/prisma'; export const dynamic = 'force-dynamic'; export async function GET() { try { // 1. Get all notes const notes = await prisma.note.findMany({ select: { labels: true } }); // 2. Extract all unique labels from JSON const uniqueLabels = new Set(); notes.forEach((note: any) => { if (note.labels) { try { const parsed = JSON.parse(note.labels); if (Array.isArray(parsed)) { parsed.forEach((l: string) => uniqueLabels.add(l)); } } catch (e) { // ignore error } } }); // 3. Get existing labels in DB const existingDbLabels = await prisma.label.findMany(); const existingNames = new Set(existingDbLabels.map((l: any) => l.name)); // 4. Create missing labels const created = []; for (const name of uniqueLabels) { if (!existingNames.has(name)) { const newLabel = await prisma.label.create({ data: { name, color: 'gray' // Default color } }); created.push(newLabel); } } return NextResponse.json({ success: true, foundInNotes: uniqueLabels.size, alreadyInDb: existingNames.size, created: created.length, createdLabels: created }); } catch (error) { return NextResponse.json({ error: String(error) }, { status: 500 }); } }