All files / libs/data-capture/imports/core/src/lib refreshments.probe.ts

60% Statements 18/30
50% Branches 1/2
50% Functions 1/2
60% Lines 18/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 311x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 1x 1x                         1x  
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { LessThan, Repository } from 'typeorm';
 
import { DataRefreshment } from '@amalia/core/models';
import { CustomObjectImportStatus } from '@amalia/core/types';
import { dayjs } from '@amalia/ext/dayjs';
import { assert } from '@amalia/ext/typescript';
 
@Injectable()
export class RefreshmentsProbe {
  public constructor(
    @InjectRepository(DataRefreshment)
    private readonly refreshmentRepository: Repository<DataRefreshment>,
  ) {}
 
  public async probe(maxPendingMinutes: number = 20) {
    const pendingRefreshments = await this.refreshmentRepository.find({
      where: {
        status: CustomObjectImportStatus.PENDING,
        createdAt: LessThan(dayjs().subtract(maxPendingMinutes, 'minutes').toDate()),
      },
    });

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