All files / app/api/output output.ts

90.9% Statements 30/33
83.33% Branches 5/6
100% Functions 1/1
90.9% Lines 30/33

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 341x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 1x 1x 1x 3x 3x 3x 1x 1x 1x 1x 1x 1x 3x       3x 1x 1x  
import { NextFunction, Request, Response } from 'express';
import { TicketData } from '../../types/ITicketData.js';
import { ServiceFactory, ClassName, RequestService } from '../../service/serviceFactory.js';
import { TicketNumber } from './output.schema.js';
import { HttpError } from '../../utils/errors/httpError.js';
import { CODES } from '../../utils/errors/codes.js';
 
const output = async (req: Request, res: Response, next: NextFunction) => {
  try {
    const { ticket } = req.params as unknown as TicketNumber;
 
    const requestService = await ServiceFactory.getInstanceOfClass<RequestService>(ClassName.RequestService);
    const reqData = await requestService.getRequest(ticket);
    if (!reqData) {
      next(new HttpError(`Not found data for ticket: ${ticket}`, CODES.NOT_FOUND, 404));
      return;
    }
 
    const { result, inputNumber } = JSON.parse(reqData) as TicketData;
    if (!result) {
      next(new HttpError(`Not found result for ticket: ${ticket}`, CODES.NOT_FOUND, 404));
      return;
    }
 
    res.status(200).json({ ticket, inputNumber, fibonacci: result });
    return;
  } catch (err) {
    next(err);
    return;
  }
};
 
export default output;