53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { Injectable, Logger } from "@nestjs/common";
|
|
import { Cron } from "@nestjs/schedule";
|
|
import { FeederService } from "../modules/feeder/feeder.service";
|
|
import { TaskLockService } from "./task-lock.service";
|
|
|
|
@Injectable()
|
|
export class HistoricalResultsSyncTask {
|
|
private readonly logger = new Logger(HistoricalResultsSyncTask.name);
|
|
|
|
constructor(
|
|
private readonly feederService: FeederService,
|
|
private readonly taskLock: TaskLockService,
|
|
) {}
|
|
|
|
private shouldSkipInHistoricalMode(jobName: string): boolean {
|
|
if (process.env.FEEDER_MODE === "historical") {
|
|
this.logger.debug(`Skipping ${jobName} in historical feeder mode`);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Pull yesterday's completed matches into the permanent matches table.
|
|
*/
|
|
@Cron("0 8 * * *", { timeZone: "Europe/Istanbul" })
|
|
async syncPreviousDayCompletedMatches() {
|
|
if (this.shouldSkipInHistoricalMode("syncPreviousDayCompletedMatches")) {
|
|
return;
|
|
}
|
|
|
|
await this.taskLock.runWithLease(
|
|
"syncPreviousDayCompletedMatches",
|
|
6 * 60 * 60 * 1000,
|
|
async () => {
|
|
this.logger.log(
|
|
"Starting previous-day completed match sync for football and basketball...",
|
|
);
|
|
|
|
try {
|
|
await this.feederService.runPreviousDayCompletedMatchesScan();
|
|
this.logger.log("Previous-day completed match sync finished");
|
|
} catch (error: any) {
|
|
this.logger.error(
|
|
`Previous-day completed match sync failed: ${error.message}`,
|
|
);
|
|
}
|
|
},
|
|
this.logger,
|
|
);
|
|
}
|
|
}
|