* add automatic library scan config options * add validation * open api * use CronJob instead of cron-validator * fix tests * catch potential error of the library scan initialization * better description for input field * move library scan job initialization to server app service * fix tests * add comments to all parameters of cronjob contructor * make scan a child of a more general library object * open api * chore: cleanup * move cronjob handling to job repoistory * web: select for common cron expressions * fix open api * fix tests * put scanning settings in nested accordion * fix system config validation * refactor, tests --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { JobService, LibraryService, ONE_HOUR, SearchService, ServerInfoService, StorageService } from '@app/domain';
|
|
import { Injectable, Logger } from '@nestjs/common';
|
|
import { Cron, CronExpression, Interval } from '@nestjs/schedule';
|
|
|
|
@Injectable()
|
|
export class AppService {
|
|
private logger = new Logger(AppService.name);
|
|
|
|
constructor(
|
|
private jobService: JobService,
|
|
private libraryService: LibraryService,
|
|
private searchService: SearchService,
|
|
private storageService: StorageService,
|
|
private serverService: ServerInfoService,
|
|
) {}
|
|
|
|
@Interval(ONE_HOUR.as('milliseconds'))
|
|
async onVersionCheck() {
|
|
await this.serverService.handleVersionCheck();
|
|
}
|
|
|
|
@Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT)
|
|
async onNightlyJob() {
|
|
await this.jobService.handleNightlyJobs();
|
|
}
|
|
|
|
async init() {
|
|
this.storageService.init();
|
|
await this.searchService.init();
|
|
await this.serverService.handleVersionCheck();
|
|
this.logger.log(`Feature Flags: ${JSON.stringify(await this.serverService.getFeatures(), null, 2)}`);
|
|
await this.libraryService.init();
|
|
}
|
|
|
|
async destroy() {
|
|
this.searchService.teardown();
|
|
}
|
|
}
|