router.ts 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /** @jsxImportSource https://esm.d8d.fun/hono@4.7.4/jsx */
  2. import { Hono } from "hono";
  3. import { corsMiddleware, setEnvVariables, withAuth } from "./middlewares.ts";
  4. import type { APIClient } from "@d8d-appcontainer/api";
  5. import { Auth } from "@d8d-appcontainer/auth";
  6. // 导入路由模块
  7. import { createAuthRoutes } from "./routes_auth.ts";
  8. import { createUserRoutes } from "./routes_users.ts";
  9. import { createKnowInfoRoutes } from "./routes_know_info.ts";
  10. import { createFileUploadRoutes } from "./routes_file_upload.ts";
  11. import { createFileCategoryRoutes } from "./routes_file_category.ts";
  12. import { createThemeRoutes } from "./routes_theme.ts";
  13. import { createChartRoutes } from "./routes_charts.ts";
  14. import { createMapRoutes } from "./routes_maps.ts";
  15. import { createSystemSettingsRoutes } from "./routes_system_settings.ts";
  16. import { createMessagesRoutes } from "./routes_messages.ts";
  17. import { createMigrationsRoutes } from "./routes_migrations.ts";
  18. import { createHomeRoutes } from "./routes_home.ts";
  19. import { createClassRoomRoutes } from "./routes_classroom.ts";
  20. import { createStockRoutes } from "./routes_stock.ts";
  21. import { createClassroomDataRoutes } from "./routes_classroom_data.ts";
  22. import { createSubmissionRoutes } from "./routes_submission_records.ts";
  23. import { createDateNotesRoutes } from "./routes_date_notes.ts";
  24. import { createXunlianCodesRoutes } from "./routes_xunlian_codes.ts";
  25. import { createVodRoutes } from "./routes_vod.ts";
  26. export function createRouter(
  27. apiClient: APIClient,
  28. moduleDir: string,
  29. auth: Auth,
  30. ) {
  31. const router = new Hono();
  32. // 添加CORS中间件
  33. router.use("/*", corsMiddleware);
  34. // 创建API路由
  35. const api = new Hono();
  36. // 设置环境变量
  37. api.use("*", setEnvVariables(apiClient, moduleDir, auth));
  38. // 注册所有路由
  39. api.route("/auth", createAuthRoutes(withAuth));
  40. api.route("/users", createUserRoutes(withAuth));
  41. api.route("/know-infos", createKnowInfoRoutes(withAuth));
  42. api.route("/upload", createFileUploadRoutes(withAuth));
  43. api.route("/file-categories", createFileCategoryRoutes(withAuth));
  44. api.route("/theme", createThemeRoutes(withAuth));
  45. api.route("/charts", createChartRoutes(withAuth));
  46. api.route("/map", createMapRoutes(withAuth));
  47. api.route("/settings", createSystemSettingsRoutes(withAuth));
  48. api.route("/messages", createMessagesRoutes(withAuth));
  49. api.route("/migrations", createMigrationsRoutes(withAuth));
  50. api.route("/home", createHomeRoutes(withAuth));
  51. api.route("/classroom", createClassRoomRoutes(withAuth));
  52. api.route("/stock", createStockRoutes(withAuth));
  53. api.route("/classroom-datas", createClassroomDataRoutes(withAuth));
  54. api.route("/submission-records", createSubmissionRoutes(withAuth));
  55. api.route("/date-notes", createDateNotesRoutes(withAuth));
  56. api.route("/xunlian-codes", createXunlianCodesRoutes(withAuth));
  57. api.route("/vod", createVodRoutes(withAuth));
  58. // 注册API路由到主路由器
  59. router.route("/api", api);
  60. return router;
  61. }