generate-many-channels.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* eslint-disable no-console */
  2. import {
  3. bootstrapWorker,
  4. ChannelService,
  5. CurrencyCode,
  6. isGraphQlErrorResult,
  7. LanguageCode,
  8. RequestContextService,
  9. RoleService,
  10. } from '@vendure/core';
  11. import { devConfig } from '../dev-config';
  12. const CHANNEL_COUNT = 1001;
  13. generateManyChannels()
  14. .then(() => process.exit(0))
  15. .catch(() => process.exit(1));
  16. // Used for testing scenarios where there are many channels
  17. // such as https://github.com/vendure-ecommerce/vendure/issues/2233
  18. async function generateManyChannels() {
  19. const { app } = await bootstrapWorker(devConfig);
  20. const requestContextService = app.get(RequestContextService);
  21. const channelService = app.get(ChannelService);
  22. const roleService = app.get(RoleService);
  23. const ctxAdmin = await requestContextService.create({
  24. apiType: 'admin',
  25. });
  26. const superAdminRole = await roleService.getSuperAdminRole(ctxAdmin);
  27. const customerRole = await roleService.getCustomerRole(ctxAdmin);
  28. for (let i = CHANNEL_COUNT; i > 0; i--) {
  29. const channel = await channelService.create(ctxAdmin, {
  30. code: `channel-test-${i}`,
  31. token: `channel--test-${i}`,
  32. defaultLanguageCode: LanguageCode.en,
  33. availableLanguageCodes: [LanguageCode.en],
  34. pricesIncludeTax: true,
  35. defaultCurrencyCode: CurrencyCode.USD,
  36. availableCurrencyCodes: [CurrencyCode.USD],
  37. sellerId: 1,
  38. defaultTaxZoneId: 1,
  39. defaultShippingZoneId: 1,
  40. });
  41. if (isGraphQlErrorResult(channel)) {
  42. console.log(channel.message);
  43. } else {
  44. console.log(`Created channel ${channel.code}`);
  45. await roleService.assignRoleToChannel(ctxAdmin, superAdminRole.id, channel.id);
  46. await roleService.assignRoleToChannel(ctxAdmin, customerRole.id, channel.id);
  47. }
  48. }
  49. }