import { PrismaClient } from '@prisma/client';
import { tagsService } from '../src/services/task-management/tags';

const prisma = new PrismaClient();

async function seedTags() {
  console.log('🌱 Début du seeding des tags...');

  // Récupérer le premier utilisateur pour assigner les tags
  const firstUser = await prisma.user.findFirst({
    orderBy: { createdAt: 'asc' },
  });

  if (!firstUser) {
    console.log("❌ Aucun utilisateur trouvé. Créez d'abord un utilisateur.");
    return;
  }

  console.log(`👤 Assignation des tags à: ${firstUser.email}`);

  const testTags = [
    { name: 'frontend', color: '#3B82F6' },
    { name: 'backend', color: '#EF4444' },
    { name: 'ui', color: '#8B5CF6' },
    { name: 'design', color: '#EC4899' },
    { name: 'mobile', color: '#F59E0B' },
    { name: 'performance', color: '#10B981' },
    { name: 'api', color: '#06B6D4' },
    { name: 'testing', color: '#84CC16' },
    { name: 'quality', color: '#9333EA' },
    { name: 'security', color: '#DC2626' },
    { name: 'audit', color: '#2563EB' },
  ];

  for (const tagData of testTags) {
    try {
      const existing = await tagsService.getTagByName(
        tagData.name,
        firstUser.id
      );
      if (!existing) {
        const tag = await tagsService.createTag({
          ...tagData,
          userId: firstUser.id,
        });
        console.log(`✅ Tag créé: ${tag.name} (${tag.color})`);
      } else {
        console.log(`⚠️ Tag existe déjà: ${tagData.name}`);
      }
    } catch (error) {
      console.error(`❌ Erreur pour le tag ${tagData.name}:`, error);
    }
  }

  console.log('🎉 Seeding des tags terminé !');
}

// Exécuter le script
seedTags().catch(console.error);
