email-processor.controller.ts 1007 B

1234567891011121314151617181920212223242526272829
  1. import { Controller, Inject, OnModuleInit } from '@nestjs/common';
  2. import { MessagePattern } from '@nestjs/microservices';
  3. import { asyncObservable } from '@vendure/core';
  4. import { Observable } from 'rxjs';
  5. import { EMAIL_PLUGIN_OPTIONS } from './constants';
  6. import { EmailProcessor } from './email-processor';
  7. import { EmailPluginOptions, EmailWorkerMessage } from './types';
  8. /**
  9. * Runs on the Worker process and does the actual work of generating and sending the emails.
  10. */
  11. @Controller()
  12. export class EmailProcessorController extends EmailProcessor implements OnModuleInit {
  13. constructor(@Inject(EMAIL_PLUGIN_OPTIONS) protected options: EmailPluginOptions) {
  14. super(options);
  15. }
  16. async onModuleInit() {
  17. await super.init();
  18. }
  19. @MessagePattern(EmailWorkerMessage.pattern)
  20. sendEmail(data: EmailWorkerMessage['data']): Observable<EmailWorkerMessage['response']> {
  21. return asyncObservable(async () => {
  22. return this.process(data);
  23. });
  24. }
  25. }