All files / worker jobHandler.ts

100% Statements 32/32
100% Branches 6/6
100% Functions 5/5
100% Lines 32/32

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 331x 1x 1x 1x 1x 1x 1x 1x 1x 2x 1x 1x 2x 2x 2x 1x 1x 2x 2x 2x 2x 2x 2x 2x 1x 1x 1x 1x 1x 1x 2x 1x  
import { ConsumeMessage } from 'amqplib';
import { Fibonacci } from './fibonacci.js';
import { Logger } from '../app/utils/logger.js';
import { IJobHandler } from '../app/types/IJobHandler.js';
import { TicketData } from '../app/types/ITicketData.js';
import { RequestService } from '../app/service/serviceFactory.js';
 
export default class JobHandler implements IJobHandler {
  private readonly fibonacci: Fibonacci;
  private readonly requestService: RequestService;
 
  constructor(fibonacci: Fibonacci, requestService: RequestService) {
    this.fibonacci = fibonacci;
    this.requestService = requestService;
  }
 
  public async handleMessage(msg: ConsumeMessage) {
    try {
      Logger.log('message retrieved:', msg.content.toString());
      const { ticket, inputNumber } = JSON.parse(msg.content.toString()) as TicketData;
 
      Logger.log('starting calculate Fibonacci for:', inputNumber);
      const result = await this.fibonacci.getValueFor(inputNumber);
      Logger.log('finished calculate Fibonacci for:', inputNumber);
 
      await this.requestService.updateRequestWithData(ticket, { inputNumber, result: result.toString() });
      Logger.log('updated result for request ticket:', ticket);
    } catch (err: unknown) {
      Logger.error(err);
    }
  }
}