93 lines
2.4 KiB
TypeScript
93 lines
2.4 KiB
TypeScript
import dotenv from "dotenv";
|
|
dotenv.config();
|
|
import pkg from './package.json' assert {type: 'json'};
|
|
import { Queue } from 'bullmq';
|
|
import { REDIS_HOST, REDIS_PORT, PORT, TASK_LIST } from './src/env.js';
|
|
import express, { Request, Response } from 'express';
|
|
import { createBullBoard } from "@bull-board/api";
|
|
import { ExpressAdapter } from '@bull-board/express';
|
|
import { BullMQAdapter } from '@bull-board/api/bullMQAdapter.js';
|
|
import { default as Redis } from 'ioredis'
|
|
import { registerRoutes } from "./src/register-routes.js";
|
|
import * as swaggerJson from './dist/futureporn-qa/swagger/swagger.json';
|
|
import * as swaggerUI from 'swagger-ui-express';
|
|
|
|
console.log(`futureporn-qa manager version ${pkg.version}`)
|
|
|
|
const connection = new Redis.default({
|
|
port: parseInt(REDIS_PORT),
|
|
host: REDIS_HOST,
|
|
maxRetriesPerRequest: null,
|
|
});
|
|
|
|
|
|
const taskList = TASK_LIST.split(',');
|
|
let adapters: BullMQAdapter[] = [];
|
|
|
|
async function main() {
|
|
|
|
|
|
for (const task of taskList) {
|
|
console.log(`> setting up ${task}`)
|
|
const queue: Queue = new Queue(task, {
|
|
connection
|
|
});
|
|
adapters.push(new BullMQAdapter(queue));
|
|
if (task === 'identifyVodIssues') {
|
|
await queue.add(
|
|
'identifyVodIssues',
|
|
{
|
|
foo: 'blah',
|
|
},
|
|
{
|
|
repeat: {
|
|
every: 10000
|
|
}
|
|
}
|
|
)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const serverAdapter = new ExpressAdapter();
|
|
serverAdapter.setBasePath('/admin/queues');
|
|
|
|
const { addQueue, removeQueue, setQueues, replaceQueues } = createBullBoard({
|
|
queues: adapters,
|
|
serverAdapter: serverAdapter,
|
|
});
|
|
|
|
|
|
const app = express();
|
|
app.use('/admin/queues', serverAdapter.getRouter());
|
|
registerRoutes(app);
|
|
|
|
app.use(["/openapi", "/docs", "/swagger"], swaggerUI.serve, swaggerUI.setup(swaggerJson));
|
|
app.get('/', (req: Request, res: Response) => {
|
|
res.send(`
|
|
<h1>futureporn-qa</h1>
|
|
<h2>Meta</h2>
|
|
<ul>
|
|
<li>version ${pkg.version}</li>
|
|
<li><a href="https://gitea.futureporn.net/futureporn/futureporn-qa">git repo</a></li>
|
|
</ul>
|
|
<h2>Pages</h2>
|
|
<ul>
|
|
<li><a href="/admin/queues">Bull Dashboard (queues)</a></li>
|
|
<li><a href="/openapi">Swagger (API reference)</a></li>
|
|
</ul>
|
|
`)
|
|
})
|
|
|
|
|
|
app.listen(PORT, () => {
|
|
console.log(`Listening on ${PORT}`);
|
|
console.log(`For the UI, open http://localhost:${PORT}/admin/queues`);
|
|
});
|
|
|
|
}
|
|
|
|
|
|
main();
|