From 0f1c101accf1b01b1604c4ba3b7731afb6b57a09 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 10 Oct 2024 01:22:09 +0100 Subject: [PATCH] cronjob stuff --- projects/backend/src/index.ts | 24 +++++++++++++++---- .../backend/src/service/player.service.ts | 22 ----------------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/projects/backend/src/index.ts b/projects/backend/src/index.ts index 23e6919..2c5ad17 100644 --- a/projects/backend/src/index.ts +++ b/projects/backend/src/index.ts @@ -14,6 +14,9 @@ import { Config } from "./common/config"; import { setLogLevel } from "@typegoose/typegoose"; import PlayerController from "./controller/player.controller"; import { PlayerService } from "./service/player.service"; +import { cron } from "@elysiajs/cron"; +import { PlayerDocument, PlayerModel } from "./model/player"; +import { getMidnightAlignedDate } from "@ssr/common/utils/time-utils"; // Load .env file dotenv.config({ @@ -26,6 +29,22 @@ await mongoose.connect(Config.mongoUri!); // Connect to MongoDB setLogLevel("DEBUG"); export const app = new Elysia(); +app.use( + cron({ + name: "player-statistics-tracker-cron", + pattern: "0 1 * * *", // Every day at 00:01 (midnight) + timezone: "Europe/London", + run: async () => { + console.log("Tracking player statistics..."); + const players: PlayerDocument[] = await PlayerModel.find({}); + for (const player of players) { + await PlayerService.trackScoreSaberPlayer(getMidnightAlignedDate(new Date()), player); + } + console.log("Finished tracking player statistics."); + }, + }) +); + /** * Custom error handler */ @@ -99,11 +118,6 @@ app.use( }) ); -/** - * Start cronjobs - */ -PlayerService.initCronjobs(); - /** * Swagger Documentation */ diff --git a/projects/backend/src/service/player.service.ts b/projects/backend/src/service/player.service.ts index 31436ca..cdc0051 100644 --- a/projects/backend/src/service/player.service.ts +++ b/projects/backend/src/service/player.service.ts @@ -1,33 +1,11 @@ import { PlayerDocument, PlayerModel } from "../model/player"; import { NotFoundError } from "../error/not-found-error"; -import { cron } from "@elysiajs/cron"; -import { app } from "../index"; import { getDaysAgoDate, getMidnightAlignedDate } from "@ssr/common/utils/time-utils"; import { scoresaberService } from "@ssr/common/service/impl/scoresaber"; import ScoreSaberPlayerToken from "@ssr/common/types/token/scoresaber/score-saber-player-token"; import { InternalServerError } from "../error/internal-server-error"; export class PlayerService { - /** - * Initialize the cron jobs - */ - public static initCronjobs() { - app.use( - cron({ - name: "player-statistics-tracker-cron", - pattern: "0 1 * * *", // Every day at 00:01 (midnight) - run: async () => { - console.log("Tracking player statistics..."); - const players: PlayerDocument[] = await PlayerModel.find({}); - for (const player of players) { - await PlayerService.trackScoreSaberPlayer(getMidnightAlignedDate(new Date()), player); - } - console.log("Finished tracking player statistics."); - }, - }) - ); - } - /** * Get a player from the database. *