All files / libs/tenants/users/core/src/lib/events UserEventsHandler.ts

59.18% Statements 29/49
50% Branches 1/2
50% Functions 1/2
59.18% Lines 29/49

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 501x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x                                         1x  
import { Logger } from '@nestjs/common';
import { EventsHandler, type IEventHandler } from '@nestjs/cqrs';
 
import { type StatementDatasetCacheBurstEvent } from '@amalia/core/types';
import { MessageTasks, MessageType, QueueService } from '@amalia/kernel/queue/core';
import {
  UserDeactivatedEvent,
  UserInvitedEvent,
  UserReactivatedEvent,
  UserUpdatedEvent,
} from '@amalia/tenants/users/profile/events';
 
import { UsersCreatedEvent } from './UsersCreatedEvent';
 
export type UserEvent =
  | UserDeactivatedEvent
  | UserInvitedEvent
  | UserReactivatedEvent
  | UsersCreatedEvent
  | UserUpdatedEvent;
 
@EventsHandler(UserUpdatedEvent, UsersCreatedEvent, UserInvitedEvent, UserDeactivatedEvent, UserReactivatedEvent)
export class UserEventsHandler implements IEventHandler<UserEvent> {
  private readonly logger = new Logger(UserEventsHandler.name);
 
  public constructor(private readonly queueService: QueueService) {}
 
  public async handle(event: UserEvent): Promise<void> {
    const { company } = event;

    const task = {
      type: MessageType.TASK,
      taskIdentifier: MessageTasks.BURST_STATEMENT_DATASET_CACHE,
    };

    const payload: StatementDatasetCacheBurstEvent = {
      companyId: company.id,
    };

    this.logger.log({
      message: 'Sent BURST_STATEMENT_DATASET_CACHE to queue',
      event: event.constructor.name,
      task,
      payload,
    });

    await this.queueService.sendToQueue(task, payload);
  }
}