61 lines
1.7 KiB
TypeScript
61 lines
1.7 KiB
TypeScript
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());
|