This commit is contained in:
parent
bca3732f1c
commit
0f1c101acc
@ -14,6 +14,9 @@ import { Config } from "./common/config";
|
|||||||
import { setLogLevel } from "@typegoose/typegoose";
|
import { setLogLevel } from "@typegoose/typegoose";
|
||||||
import PlayerController from "./controller/player.controller";
|
import PlayerController from "./controller/player.controller";
|
||||||
import { PlayerService } from "./service/player.service";
|
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
|
// Load .env file
|
||||||
dotenv.config({
|
dotenv.config({
|
||||||
@ -26,6 +29,22 @@ await mongoose.connect(Config.mongoUri!); // Connect to MongoDB
|
|||||||
setLogLevel("DEBUG");
|
setLogLevel("DEBUG");
|
||||||
export const app = new Elysia();
|
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
|
* Custom error handler
|
||||||
*/
|
*/
|
||||||
@ -99,11 +118,6 @@ app.use(
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
* Start cronjobs
|
|
||||||
*/
|
|
||||||
PlayerService.initCronjobs();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Swagger Documentation
|
* Swagger Documentation
|
||||||
*/
|
*/
|
||||||
|
@ -1,33 +1,11 @@
|
|||||||
import { PlayerDocument, PlayerModel } from "../model/player";
|
import { PlayerDocument, PlayerModel } from "../model/player";
|
||||||
import { NotFoundError } from "../error/not-found-error";
|
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 { getDaysAgoDate, getMidnightAlignedDate } from "@ssr/common/utils/time-utils";
|
||||||
import { scoresaberService } from "@ssr/common/service/impl/scoresaber";
|
import { scoresaberService } from "@ssr/common/service/impl/scoresaber";
|
||||||
import ScoreSaberPlayerToken from "@ssr/common/types/token/scoresaber/score-saber-player-token";
|
import ScoreSaberPlayerToken from "@ssr/common/types/token/scoresaber/score-saber-player-token";
|
||||||
import { InternalServerError } from "../error/internal-server-error";
|
import { InternalServerError } from "../error/internal-server-error";
|
||||||
|
|
||||||
export class PlayerService {
|
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.
|
* Get a player from the database.
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user