Skip to content
This repository was archived by the owner on Mar 18, 2025. It is now read-only.

Update Gateway Microservice Typescript Config #2811

Open
wants to merge 1 commit into
base: staging
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 77 additions & 78 deletions packages/gateway/src/routes/setupRoutes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ import bodyparser from "koa-bodyparser";
import cors from "koa2-cors";
import serve from "koa-static";
import koaCash from "koa-cash";
import { KoaAdapter } from "@bull-board/koa";
import { createBullBoard } from "@bull-board/api";
import { BullMQAdapter } from "@bull-board/api/bullMQAdapter";

export const setupHealthCheckRoute = (
routerInstance: Router,
Expand Down Expand Up @@ -132,86 +135,82 @@ export const setupDocs = (app: Koa, config: Config.ConfigSchema): boolean => {
}
};

// export const setupMicroserviceRoutes = async (
// app: Koa,
// config: Config.ConfigSchema,
// queues: Queue[],
// ): Promise<boolean> => {
// try {
// if (config?.redis?.host && config?.redis?.port) {
// await addQueues(config, queues);
// setupBullBoard(app, queues);
// }
// return true;
// } catch (e) {
// logger.error(`Error setting up microservice routes: ${e}`, {
// label: "Gateway",
// });
// return false;
// }
// };
export const setupMicroserviceRoutes = async (
app: Koa,
config: Config.ConfigSchema,
queues: Queue[],
): Promise<boolean> => {
try {
if (config?.redis?.host && config?.redis?.port) {
await addQueues(config, queues);
setupBullBoard(app, queues);
}
return true;
} catch (e) {
logger.error(`Error setting up microservice routes: ${e}`, {
label: "Gateway",
});
return false;
}
};

// Add BullMQ Queues for Microservice Jobs
// export const addQueues = async (
// config: Config.ConfigSchema,
// queues: Queue[],
// ): Promise<boolean> => {
// try {
// const releaseMonitorQueue = new Queue("releaseMonitor", {
// connection: {
// host: config?.redis?.host,
// port: config?.redis?.port,
// },
// });
// const constraintsQueue = new Queue("constraints", {
// connection: {
// host: config?.redis?.host,
// port: config?.redis?.port,
// },
// });
// const chaindataQueue = new Queue("chaindata", {
// connection: {
// host: config?.redis?.host,
// port: config?.redis?.port,
// },
// });
// const blockQueue = new Queue("block", {
// connection: {
// host: config?.redis?.host,
// port: config?.redis?.port,
// },
// });
//
// queues.push(
// releaseMonitorQueue,
// constraintsQueue,
// chaindataQueue,
// blockQueue,
// );
// return true;
// } catch (e) {
// logger.error(`Error adding queues: ${e}`, { label: "Gateway" });
// return false;
// }
// };
export const addQueues = async (
config: Config.ConfigSchema,
queues: Queue[],
): Promise<boolean> => {
try {
const releaseMonitorQueue = new Queue("releaseMonitor", {
connection: {
host: config?.redis?.host,
port: config?.redis?.port,
},
});
const constraintsQueue = new Queue("constraints", {
connection: {
host: config?.redis?.host,
port: config?.redis?.port,
},
});
const chaindataQueue = new Queue("chaindata", {
connection: {
host: config?.redis?.host,
port: config?.redis?.port,
},
});
const blockQueue = new Queue("block", {
connection: {
host: config?.redis?.host,
port: config?.redis?.port,
},
});

// export const setupBullBoard = (app: Koa, queues: Queue[]): boolean => {
// try {
// const serverAdapter = new KoaAdapter();
// createBullBoard({
// queues: queues.map((queue) => {
// return new BullMQAdapter(queue);
// }),
// serverAdapter,
// });
// serverAdapter.setBasePath("/bull");
// app.use(serverAdapter.registerPlugin());
// return true;
// } catch (e) {
// logger.error(`Error setting up BullBoard: ${e}`, { label: "Gateway" });
// return false;
// }
// };
queues.push(
releaseMonitorQueue,
constraintsQueue,
chaindataQueue,
blockQueue,
);
return true;
} catch (e) {
logger.error(`Error adding queues: ${e}`, { label: "Gateway" });
return false;
}
};

export const setupBullBoard = (app: Koa, queues: Queue[]): void => {
try {
const serverAdapter = new KoaAdapter();
createBullBoard({
queues: queues.map((queue) => new BullMQAdapter(queue)),
serverAdapter: serverAdapter as never,
});
serverAdapter.setBasePath("/bull");
app.use(serverAdapter.registerPlugin());
} catch (error) {
console.error(`Error setting up BullBoard: ${error}`);
}
};

export const setupCache = (app: Koa, configCache: number): boolean => {
try {
Expand Down Expand Up @@ -275,7 +274,7 @@ export const setupRoutes = async (
setupDocs(app, config);

// Setup microservice routes if Redis is configured in config
// await setupMicroserviceRoutes(app, config, queues);
await setupMicroserviceRoutes(app, config, queues);

// Serve all other routes
app.use(router.routes());
Expand Down