// src/scripts/init-preferences.ts import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); type UserSummary = { id: string; // UUID email: string; }; async function main() { console.log('➡️ Initialisation des préférences utilisateurs…'); // 1. Récupérer tous les users const users = (await prisma.users.findMany({ select: { id: true, email: true, }, })) as UserSummary[]; console.log(`➡️ ${users.length} users trouvés dans la DB`); // 2. Récupérer toutes les préférences existantes const existingPrefs = await prisma.preferences.findMany({ select: { user_id: true, }, }); const userIdsWithPrefs = new Set(existingPrefs.map((p) => p.user_id)); console.log(`➡️ ${existingPrefs.length} users ont déjà des préférences`); // 3. Filtrer les users qui n'ont pas encore de preferences const usersWithoutPrefs = users.filter((u) => !userIdsWithPrefs.has(u.id)); console.log(`➡️ ${usersWithoutPrefs.length} users n'ont pas encore de préférences`); if (usersWithoutPrefs.length === 0) { console.log('✅ Rien à faire, toutes les préférences sont déjà créées.'); return; } // 4. Préparer les entrées pour createMany const prefsToCreate = usersWithoutPrefs.map((u) => ({ user_id: u.id, // tous les autres champs prendront leurs valeurs par défaut (0) })); // 5. Insertion en batch const result = await prisma.preferences.createMany({ data: prefsToCreate, skipDuplicates: true, // sécurité si jamais le script est relancé }); console.log(`✅ ${result.count} préférences créées dans la DB`); } main() .catch((err) => { console.error('❌ Erreur pendant l’initialisation des préférences', err); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });