All files / libs/payout-calculation/compute-engine/core-lifecycle/src/lifecycle calculations.probe.ts

0% Statements 0/30
0% Branches 0/1
0% Functions 0/1
0% Lines 0/30

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                                                             
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { LessThan, Repository } from 'typeorm';

import { Calculation } from '@amalia/core/models';
import { CalculationStatus } from '@amalia/core/types';
import { dayjs } from '@amalia/ext/dayjs';
import { assert } from '@amalia/ext/typescript';

@Injectable()
export class CalculationsProbe {
  public constructor(
    @InjectRepository(Calculation)
    private readonly calculationRepository: Repository<Calculation>,
  ) {}

  public async probe(maxPendingMinutes: number = 20) {
    const pendingCalculations = await this.calculationRepository.find({
      where: {
        status: CalculationStatus.PENDING,
        createdAt: LessThan(dayjs().subtract(maxPendingMinutes, 'minutes').toDate()),
      },
    });

    assert(
      pendingCalculations.length === 0,
      `Some calculations (${pendingCalculations.length}) are in pending for more than ${maxPendingMinutes} minutes`,
    );
  }
}