targo-backend/scripts/init-preferences.ts
2025-11-27 12:24:47 -05:00

68 lines
1.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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 linitialisation des préférences', err);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});