index.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import express, { type Application, Router } from "express";
  2. import { docsPath, verMajor } from "@src/constants.js";
  3. import { redirectToDocs } from "@src/utils.js";
  4. import { initSearchRoutes } from "@routes/search.js";
  5. import { initTranslationsRoutes } from "@routes/translations.js";
  6. import { initAlbumRoutes } from "@routes/album.js";
  7. const hostHomepage = process.env.HOST_HOMEPAGE?.toLowerCase() !== "false";
  8. const routeFuncs: ((router: Router) => unknown)[] = [
  9. initSearchRoutes,
  10. initTranslationsRoutes,
  11. initAlbumRoutes,
  12. ];
  13. const router = Router();
  14. export function initRouter(app: Application) {
  15. for(const initRoute of routeFuncs)
  16. initRoute(router);
  17. // mount API router at versioned path
  18. app.use(`/v${verMajor}`, router);
  19. // health check
  20. router.get("/health", (_req, res) => res.status(200).send("Hello, World!"));
  21. router.get("/ping", (_req, res) => res.status(200).send("Pong!"));
  22. if(hostHomepage) {
  23. // host docs files
  24. router.use("/docs", express.static(docsPath, {
  25. index: "index.html",
  26. }));
  27. // redirect to docs page
  28. router.get("/", (_req, res) => redirectToDocs(res));
  29. app.get("/docs", (_req, res) => redirectToDocs(res));
  30. }
  31. }