UserSeeder.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. const { KeycloakRepository, UserRepository, UserAreaRepository } = require('../../src/repository/admin/SalesRepository.js');
  2. const prisma = require('../../src/prisma/PrismaClient');
  3. const { faker } = require('@faker-js/faker');
  4. exports.seedSales = async () => {
  5. try {
  6. const provinces = await prisma.province.findMany();
  7. if (provinces.length === 0) throw new Error('No provinces found');
  8. const users = [
  9. {
  10. username: 'sales1',
  11. email: 'sales1@example.com',
  12. firstname: 'Sales',
  13. lastname: 'One',
  14. password: 'Sales@123',
  15. },
  16. {
  17. username: 'sales2',
  18. email: 'sales2@example.com',
  19. firstname: 'Sales',
  20. lastname: 'Two',
  21. password: 'Sales@123',
  22. },
  23. {
  24. username: 'sales3',
  25. email: 'sales3@example.com',
  26. firstname: 'Sales',
  27. lastname: 'Three',
  28. password: 'Sales@123',
  29. },
  30. ];
  31. for (const user of users) {
  32. const shuffled = provinces.sort(() => 0.5 - Math.random());
  33. const selectedProvinces = shuffled.slice(0, Math.floor(Math.random() * 3) + 1);
  34. const province_ids = selectedProvinces.map(p => p.id);
  35. user.province_ids = province_ids;
  36. const userId = await KeycloakRepository.createUser(user);
  37. await KeycloakRepository.assignSalesRole(userId);
  38. await UserRepository.createUser(userId, user);
  39. await UserAreaRepository.createMany(userId, province_ids);
  40. console.log(`✅ Seeded user ${user.username}`);
  41. }
  42. } catch (err) {
  43. console.error('❌ Failed to seed sales:', err.message);
  44. }
  45. };