import { PrismaClient, LeaveTypes, LeaveApprovalStatus, LeaveRequests } from '@prisma/client'; const prisma = new PrismaClient(); function daysAgo(n:number) { const d = new Date(); d.setUTCDate(d.getUTCDate() - n); d.setUTCHours(0,0,0,0); return d; } async function main() { const employees = await prisma.employees.findMany({ select: { id: true } }); const bankCodes = await prisma.bankCodes.findMany({ select: { id: true }, where: { type: 'LEAVE' } }); const types = Object.values(LeaveTypes); const statuses = Object.values(LeaveApprovalStatus); // ✅ typer le tableau pour éviter never[] const created: LeaveRequests[] = []; for (let i = 0; i < 10; i++) { const emp = employees[i % employees.length]; const bc = bankCodes[i % bankCodes.length]; const start = daysAgo(120 - i * 3); // tous avant aujourd'hui const end = Math.random() < 0.4 ? null : daysAgo(119 - i * 3); const lr = await prisma.leaveRequests.create({ data: { employee_id: emp.id, bank_code_id: bc.id, leave_type: types[i % types.length], start_date_time: start, end_date_time: end, comment: `Past leave #${i+1}`, approval_status: statuses[(i+2) % statuses.length], }, }); created.push(lr); } for (const lr of created) { await prisma.leaveRequestsArchive.create({ data: { leave_request_id: lr.id, employee_id: lr.employee_id, leave_type: lr.leave_type, start_date_time: lr.start_date_time, end_date_time: lr.end_date_time, comment: lr.comment, approval_status: lr.approval_status, }, }); } console.log(`✓ LeaveRequestsArchive: ${created.length} rows`); } main().finally(() => prisma.$disconnect());