Loading packages/server/src/api/admin/canvas.ts +1 −1 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ export class CanvasAdminEndpoints extends Router { @Router.handler("put", "/heatmap") async forceGenerateHeatmap(req: Router.Request, res: Router.Response) { try { await CanvasController.get().generateHeatmap(); await CanvasController.generateHeatmap(); res.send({ success: true }); } catch (e) { Loading packages/server/src/controllers/CanvasController.ts +5 −3 Original line number Diff line number Diff line Loading @@ -539,7 +539,7 @@ export class CanvasController { * @note expensive operation, takes a bit to execute * @returns 2 character strings with 0-100 in radix 36 (depends on canvas size) */ async generateHeatmap() { static async generateHeatmap() { const redis_set = await Redis.getClient("MAIN"); const now = Date.now(); Loading @@ -554,10 +554,12 @@ export class CanvasController { where: { isTop: true, createdAt: { gte: minimumDate } }, }); for (let y = 0; y < this.canvasSize[1]; y++) { const { width, height } = Settings.get("canvas.size"); for (let y = 0; y < height; y++) { const arr: number[] = []; for (let x = 0; x < this.canvasSize[0]; x++) { for (let x = 0; x < width; x++) { const pixel = topPixels.find((px) => px.x === x && px.y === y); if (pixel) { Loading packages/server/src/jobs/canvas.ts +23 −14 Original line number Diff line number Diff line Loading @@ -5,6 +5,19 @@ import { getLogger } from "../lib/Logger"; const Logger = getLogger(); const generateHeatmap = async () => { Logger.info("Generating heatmap..."); const now = Date.now(); await CanvasController.generateHeatmap(); Logger.info( "Generated heatmap in " + ((Date.now() - now) / 1000).toFixed(1) + " seconds", ); }; /** * all jobs that are for the canvas (like heatmaps) */ Loading @@ -19,6 +32,11 @@ export const Job_Canvas = new (class Job_Canvas { }); this.setupScheduler(); generateHeatmap().catch((e) => { console.error(e); Logger.warn("Failed to generate heatmap"); }); } private setupScheduler() { Loading @@ -27,6 +45,7 @@ export const Job_Canvas = new (class Job_Canvas { "heatmap", { every: 1000 * 60 * 5, // 5 minutes immediately: true, }, { name: "heatmap", Loading Loading @@ -54,7 +73,10 @@ export const Job_Canvas = new (class Job_Canvas { async processJob(job: Job) { switch (job.name) { case "heatmap": await generateHeatmap(); await generateHeatmap().catch((e) => { console.error(e); Logger.warn("Failed to generate heatmap"); }); break; } } Loading @@ -63,16 +85,3 @@ export const Job_Canvas = new (class Job_Canvas { return this.#queue.drain(); } })(); const generateHeatmap = async () => { Logger.info("Generating heatmap..."); const now = Date.now(); await CanvasController.get().generateHeatmap(); Logger.info( "Generated heatmap in " + ((Date.now() - now) / 1000).toFixed(1) + " seconds", ); }; Loading
packages/server/src/api/admin/canvas.ts +1 −1 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ export class CanvasAdminEndpoints extends Router { @Router.handler("put", "/heatmap") async forceGenerateHeatmap(req: Router.Request, res: Router.Response) { try { await CanvasController.get().generateHeatmap(); await CanvasController.generateHeatmap(); res.send({ success: true }); } catch (e) { Loading
packages/server/src/controllers/CanvasController.ts +5 −3 Original line number Diff line number Diff line Loading @@ -539,7 +539,7 @@ export class CanvasController { * @note expensive operation, takes a bit to execute * @returns 2 character strings with 0-100 in radix 36 (depends on canvas size) */ async generateHeatmap() { static async generateHeatmap() { const redis_set = await Redis.getClient("MAIN"); const now = Date.now(); Loading @@ -554,10 +554,12 @@ export class CanvasController { where: { isTop: true, createdAt: { gte: minimumDate } }, }); for (let y = 0; y < this.canvasSize[1]; y++) { const { width, height } = Settings.get("canvas.size"); for (let y = 0; y < height; y++) { const arr: number[] = []; for (let x = 0; x < this.canvasSize[0]; x++) { for (let x = 0; x < width; x++) { const pixel = topPixels.find((px) => px.x === x && px.y === y); if (pixel) { Loading
packages/server/src/jobs/canvas.ts +23 −14 Original line number Diff line number Diff line Loading @@ -5,6 +5,19 @@ import { getLogger } from "../lib/Logger"; const Logger = getLogger(); const generateHeatmap = async () => { Logger.info("Generating heatmap..."); const now = Date.now(); await CanvasController.generateHeatmap(); Logger.info( "Generated heatmap in " + ((Date.now() - now) / 1000).toFixed(1) + " seconds", ); }; /** * all jobs that are for the canvas (like heatmaps) */ Loading @@ -19,6 +32,11 @@ export const Job_Canvas = new (class Job_Canvas { }); this.setupScheduler(); generateHeatmap().catch((e) => { console.error(e); Logger.warn("Failed to generate heatmap"); }); } private setupScheduler() { Loading @@ -27,6 +45,7 @@ export const Job_Canvas = new (class Job_Canvas { "heatmap", { every: 1000 * 60 * 5, // 5 minutes immediately: true, }, { name: "heatmap", Loading Loading @@ -54,7 +73,10 @@ export const Job_Canvas = new (class Job_Canvas { async processJob(job: Job) { switch (job.name) { case "heatmap": await generateHeatmap(); await generateHeatmap().catch((e) => { console.error(e); Logger.warn("Failed to generate heatmap"); }); break; } } Loading @@ -63,16 +85,3 @@ export const Job_Canvas = new (class Job_Canvas { return this.#queue.drain(); } })(); const generateHeatmap = async () => { Logger.info("Generating heatmap..."); const now = Date.now(); await CanvasController.get().generateHeatmap(); Logger.info( "Generated heatmap in " + ((Date.now() - now) / 1000).toFixed(1) + " seconds", ); };