import { PrismaClient, Roles } from '@prisma/client'; const prisma = new PrismaClient(); const BASE_PHONE = 1_100_000_000; // < 2_147_483_647 function emailFor(i: number) { return `user${i + 1}@example.test`; } async function main() { // 50 users total: 40 employees + 10 customers // Roles distribution for the 40 employees: // 1 ADMIN, 4 SUPERVISOR, 1 HR, 1 ACCOUNTING, 33 EMPLOYEE // 10 CUSTOMER (non-employees) const usersData: { first_name: string; last_name: string; email: string; phone_number: number; residence?: string | null; role: Roles; }[] = []; const firstNames = ['Alex','Sam','Chris','Jordan','Taylor','Morgan','Jamie','Robin','Avery','Casey']; const lastNames = ['Smith','Johnson','Williams','Brown','Jones','Miller','Davis','Wilson','Taylor','Clark']; // helper to pick const pick = (arr: T[]) => arr[Math.floor(Math.random() * arr.length)]; const rolesForEmployees: Roles[] = [ Roles.ADMIN, ...Array(4).fill(Roles.SUPERVISOR), Roles.HR, Roles.ACCOUNTING, ...Array(33).fill(Roles.EMPLOYEE), ]; // 40 employees for (let i = 0; i < 40; i++) { const fn = pick(firstNames); const ln = pick(lastNames); usersData.push({ first_name: fn, last_name: ln, email: emailFor(i), phone_number: BASE_PHONE + i, residence: Math.random() < 0.5 ? 'QC' : 'ON', role: rolesForEmployees[i], }); } // 10 customers for (let i = 40; i < 50; i++) { const fn = pick(firstNames); const ln = pick(lastNames); usersData.push({ first_name: fn, last_name: ln, email: emailFor(i), phone_number: BASE_PHONE + i, residence: Math.random() < 0.5 ? 'QC' : 'ON', role: Roles.CUSTOMER, }); } await prisma.users.createMany({ data: usersData, skipDuplicates: true }); console.log('✓ Users: 50 rows (40 employees, 10 customers)'); } main().finally(() => prisma.$disconnect());