All files / src/domain Batch.ts

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

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                                               
import Logger from "bunyan";
import { AppStatusRepository } from "./types/AppStatus";

export class BatchSearvice {
  constructor(
    private appName: string,
    private appStatusRepo: AppStatusRepository
  ) {}

  async run(logger: Logger, fn: (logger: Logger) => Promise<void>) {
    try {
      logger.info("batch start");
      this.appStatusRepo.upsertAppStatusRunning(this.appName, new Date());
      await fn(logger);
      this.appStatusRepo.upsertAppStatusStopped(this.appName, new Date());
    } catch (err) {
      this.appStatusRepo.upsertAppStatusError(this.appName, new Date());
      logger.error({ err }, "error occured");
    } finally {
      logger.info("batch end");
    }
  }
}