import { Module, OnModuleInit } from '@nestjs/common'; import { NotificationsModule } from '../notifications/notifications.module'; import { PondsModule } from '../ponds/ponds.module'; import { SchedulerModule } from '../scheduler/scheduler.module'; import { SchedulerService } from '../scheduler/scheduler.service'; import { VersionsController } from './versions.controller'; import { VersionsService } from './versions.service'; /** Daily, per operations.md's maintenance-jobs table (ADR 0013 thinning). */ const VERSION_THINNING_CADENCE_SECONDS = 24 * 60 * 60; @Module({ imports: [PondsModule, SchedulerModule, NotificationsModule], controllers: [VersionsController], providers: [VersionsService], exports: [VersionsService], }) export class VersionsModule implements OnModuleInit { constructor( private readonly scheduler: SchedulerService, private readonly versions: VersionsService, ) {} onModuleInit(): void { this.scheduler.register({ name: 'version-thinning', cadenceSeconds: VERSION_THINNING_CADENCE_SECONDS, run: () => this.versions.thinDueVersions().then(() => undefined), }); } }