All files / src/modules/open-houses open-house.scheduler.ts

47.05% Statements 8/17
42.85% Branches 3/7
0% Functions 0/2
42.85% Lines 6/14

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 2811x 11x 11x 11x     11x                       11x                  
import { Injectable, Logger } from '@nestjs/common';
import { Cron, CronExpression } from '@nestjs/schedule';
import { OpenHouseService } from '@app/modules/open-houses/open-house.service';
import { Counter, register } from 'prom-client';
 
@Injectable()
export class OpenHousePruneScheduler {
  private readonly logger = new Logger(OpenHousePruneScheduler.name);
 
  constructor(private readonly service: OpenHouseService) {}
 
  private readonly errorCounter: Counter<string> = (register.getSingleMetric('open_house_prune_errors_total') as Counter) ?? new Counter({
    name: 'open_house_prune_errors_total',
    help: 'Total number of errors thrown by the open-house prune job',
  });
 
  // Run daily at 03:10 UTC
  @Cron(CronExpression.EVERY_DAY_AT_3AM)
  async handleCron() {
    try {
    const removed = await this.service.prunePast();
    Iif (removed > 0) this.logger.log(`Pruned ${removed} past open house events`);
    } catch (err) {
      this.errorCounter.inc();
      this.logger.error(`Failed to prune open houses: ${(err as Error).message}`);
    }
  }
}