Skip to content

Commit 61aaff9

Browse files
committed
feat: background job scheduling for rating predictions (bull & redis)
1 parent badc66f commit 61aaff9

File tree

25 files changed

+2152
-2704
lines changed

25 files changed

+2152
-2704
lines changed

background.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
1+
const predictQueue = require("./services/job-queues/contestPredictionQueue");
2+
const jobScheduler = require("./services/job-queues/jobScheduler");
3+
const { createBullBoard } = require("@bull-board/api");
4+
const { BullAdapter } = require("@bull-board/api/bullAdapter");
5+
const { ExpressAdapter } = require("@bull-board/express");
16

7+
const serverAdapter = new ExpressAdapter();
8+
9+
const { addQueue, removeQueue, setQueues, replaceQueues } = createBullBoard({
10+
queues: [new BullAdapter(predictQueue), new BullAdapter(jobScheduler)],
11+
serverAdapter: serverAdapter,
12+
});
13+
14+
serverAdapter.setBasePath("/bull-board");
215

316
console.log("background is running...");
4-
const schedualing = require("./services/scheduling");
5-
schedualing.fetchAllContests();
17+
const initScheduler = async () => {
18+
await jobScheduler.add({});
19+
await jobScheduler.add({}, { repeat: { cron: "0 0 * * *" } });
20+
};
21+
initScheduler();
22+
23+
module.exports.bullBoardServerAdapter = serverAdapter;

main.js

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
if (process.env.NODE_ENV !== "production") {
22
require("dotenv").config();
33
}
4+
const express = require("express");
5+
const expressLayouts = require("express-ejs-layouts");
46

57
const mongoose = require("mongoose");
68
mongoose.connect(process.env.DATABASE_URL, {
@@ -11,14 +13,33 @@ mongoose.set("useFindAndModify", false);
1113

1214
const db = mongoose.connection;
1315

16+
const app = express();
17+
1418
db.on("error", (error) => console.error(error));
1519
db.once("open", () => {
1620
console.log("Connected to Mongoose");
21+
});
1722

18-
if (process.env.WEB == true) {
19-
require("./server");
20-
}
21-
if (process.env.BACKGROUND == true) {
22-
require("./background");
23+
if (process.env.BACKGROUND == true) {
24+
const { bullBoardServerAdapter } = require("./background");
25+
app.use("/bull-board", bullBoardServerAdapter.getRouter());
26+
}
27+
if (process.env.WEB == true) {
28+
const webRouter = require("./server");
29+
app.set("view engine", "ejs");
30+
app.set("views", __dirname + "/views");
31+
app.set("layout", "layouts/layout");
32+
app.use(expressLayouts);
33+
app.use(express.static("public"));
34+
app.use("/", webRouter);
35+
}
36+
37+
const port = process.env.PORT || 8080;
38+
39+
app.listen(port, (err) => {
40+
if (err) {
41+
console.error(err);
42+
return;
2343
}
44+
console.log("Listening on " + port);
2445
});

0 commit comments

Comments
 (0)