import { Module, OnModuleInit } from '@nestjs/common'; import { CommonModule } from '../common/common.module'; import { PondsModule } from '../ponds/ponds.module'; import { QuotasModule } from '../quotas/quotas.module'; import { SchedulerModule } from '../scheduler/scheduler.module'; import { SchedulerService } from '../scheduler/scheduler.service'; import { FileStorageService } from './file-storage.service'; import { FilesController } from './files.controller'; import { FilesService } from './files.service'; import { OrphanSweepService } from './orphan-sweep.service'; /** Nightly, per operations.md's maintenance-jobs table (issue #194). */ const ORPHAN_SWEEP_CADENCE_SECONDS = 24 * 60 * 60; @Module({ imports: [CommonModule, PondsModule, QuotasModule, SchedulerModule], controllers: [FilesController], providers: [FilesService, FileStorageService, OrphanSweepService], exports: [FileStorageService, FilesService], }) export class FilesModule implements OnModuleInit { constructor( private readonly scheduler: SchedulerService, private readonly sweep: OrphanSweepService, ) {} onModuleInit(): void { this.scheduler.register({ name: 'orphan-file-sweep', cadenceSeconds: ORPHAN_SWEEP_CADENCE_SECONDS, run: async () => { await this.sweep.sweep(); }, }); } }