/* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { PrismaClient } from "@prisma/client"; import { safeSeedUnique } from "./safeseedUnique"; import cliProgress from 'cli-progress'; type SafeSeedOptions = { skipUpdate?: boolean; silent?: boolean; // Opsional: untuk suppress log }; /** * Batch upsert with progress logging */ export async function safeSeedMany( model: T, items: Array<{ where: Record; data: Record }>, options: SafeSeedOptions = {} ) { const bar = new cliProgress.SingleBar({}, cliProgress.Presets.shades_classic); bar.start(items.length, 0); let success = 0; let failed = 0; let skipped = 0; for (const [index, item] of items.entries()) { try { const result = await safeSeedUnique(model, item.where, item.data, { ...options, silent: true, }); if (result) success++; else skipped++; } catch (err) { failed++; } bar.update(index + 1); } bar.stop(); console.log(`✅ ${String(model)}: ${success} seeded, ${skipped} skipped, ${failed} failed`); return { success, skipped, failed }; }