import { NextResponse } from 'next/server';
import prisma from '@/lib/prisma';
import { LABEL_COLORS } from '@/lib/types';
import { auth } from '@/auth';

export const dynamic = 'force-dynamic';

export async function GET() {
  try {
    const session = await auth()
    if (!session?.user?.id || (session.user as any).role !== 'ADMIN') {
      return NextResponse.json({ error: 'Unauthorized' }, { status: 401 })
    }
    const labels = await prisma.label.findMany();
    const colors = Object.keys(LABEL_COLORS).filter(c => c !== 'gray'); // Exclude gray to force colors
    
    const updates = labels.map((label: any) => {
      const randomColor = colors[Math.floor(Math.random() * colors.length)];
      return prisma.label.update({
        where: { id: label.id },
        data: { color: randomColor }
      });
    });

    await prisma.$transaction(updates);

    return NextResponse.json({
      success: true,
      updated: updates.length,
      message: "All labels have been assigned a random non-gray color."
    });

  } catch (error) {
    return NextResponse.json({ error: String(error) }, { status: 500 });
  }
}
