/** Purge des données créées par les parcours Playwright (motifs dédiés). * Appelé par le globalSetup e2e — la base locale reste propre entre les runs. */ import 'dotenv/config'; import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); async function main() { // R3 — d'abord les traces de gestion (les mouvements liés à un OT E2E // seraient orphelins après sa suppression et fausseraient les stocks seedés) await prisma.stockMovement.deleteMany({ where: { OR: [ { part: { designation: { contains: 'E2E' } } }, { workOrder: { title: { contains: 'E2E' } } }, { purchaseOrder: { supplier: { name: { contains: 'E2E' } } } }, ], }, }); await prisma.document.deleteMany({ where: { OR: [ { fileName: { contains: 'e2e' } }, { workOrder: { title: { contains: 'E2E' } } }, ], }, }); await prisma.purchaseOrderLine.deleteMany({ where: { OR: [ { part: { designation: { contains: 'E2E' } } }, { purchaseOrder: { supplier: { name: { contains: 'E2E' } } } }, ], }, }); await prisma.purchaseOrder.deleteMany({ where: { supplier: { name: { contains: 'E2E' } } }, }); await prisma.part.deleteMany({ where: { designation: { contains: 'E2E' } } }); await prisma.partner.deleteMany({ where: { name: { contains: 'E2E' } } }); await prisma.request.deleteMany({ where: { description: { contains: 'E2E' } } }); await prisma.workOrder.deleteMany({ where: { title: { contains: 'E2E' } } }); await prisma.meterReading.deleteMany({ where: { value: { gte: 90_000_000 } } }); // Un appareil de test peut avoir reçu grilles/demandes (génération du mois) : // on purge ses dépendances avant lui (FK RESTRICT). await prisma.request.deleteMany({ where: { asset: { reference: { startsWith: 'E2E-' } } } }); await prisma.workOrder.deleteMany({ where: { asset: { reference: { startsWith: 'E2E-' } } } }); await prisma.asset.deleteMany({ where: { reference: { startsWith: 'E2E-' } } }); await prisma.location.deleteMany({ where: { name: { contains: 'E2E' }, parentId: { not: null } } }); await prisma.location.deleteMany({ where: { name: { contains: 'E2E' } } }); await prisma.user.deleteMany({ where: { email: { startsWith: 'recrue-' } } }); } main() .catch((e) => { console.error(e); process.exitCode = 1; }) .finally(() => prisma.$disconnect());