|
9 | 9 |
|
10 | 10 | from __future__ import annotations |
11 | 11 |
|
| 12 | +from importlib import import_module |
| 13 | + |
12 | 14 | from fastapi import APIRouter |
13 | 15 |
|
14 | | -_router: APIRouter | None = None |
| 16 | +ROUTE_MODULES = [ |
| 17 | + "health", |
| 18 | + "analyze", |
| 19 | + "metrics", |
| 20 | + "logs", |
| 21 | + "traces", |
| 22 | + "correlation", |
| 23 | + "slo", |
| 24 | + "topology", |
| 25 | + "events", |
| 26 | + "forecast", |
| 27 | + "causal", |
| 28 | + "ml", |
| 29 | + "jobs", |
| 30 | +] |
15 | 31 |
|
16 | 32 |
|
17 | 33 | def _build_router() -> APIRouter: |
18 | | - router = APIRouter() |
19 | | - |
20 | | - from api.routes.analyze import router as analyze_router |
21 | | - from api.routes.causal import router as causal_router |
22 | | - from api.routes.correlation import router as correlation_router |
23 | | - from api.routes.events import router as events_router |
24 | | - from api.routes.forecast import router as forecast_router |
25 | | - from api.routes.health import router as health_router |
26 | | - from api.routes.jobs import router as jobs_router |
27 | | - from api.routes.logs import router as logs_router |
28 | | - from api.routes.metrics import router as metrics_router |
29 | | - from api.routes.ml import router as ml_router |
30 | | - from api.routes.slo import router as slo_router |
31 | | - from api.routes.topology import router as topology_router |
32 | | - from api.routes.traces import router as traces_router |
33 | | - |
34 | | - router.include_router(health_router) |
35 | | - router.include_router(analyze_router) |
36 | | - router.include_router(metrics_router) |
37 | | - router.include_router(logs_router) |
38 | | - router.include_router(traces_router) |
39 | | - router.include_router(correlation_router) |
40 | | - router.include_router(slo_router) |
41 | | - router.include_router(topology_router) |
42 | | - router.include_router(events_router) |
43 | | - router.include_router(forecast_router) |
44 | | - router.include_router(causal_router) |
45 | | - router.include_router(ml_router) |
46 | | - router.include_router(jobs_router) |
47 | | - |
48 | | - return router |
49 | | - |
50 | | - |
51 | | -def __getattr__(name: str) -> APIRouter: |
52 | | - if name != "router": |
53 | | - raise AttributeError(f"module {__name__!r} has no attribute {name!r}") |
54 | | - |
55 | | - global _router |
56 | | - if _router is None: |
57 | | - _router = _build_router() |
58 | | - globals()["router"] = _router |
59 | | - return _router |
| 34 | + router_instance = APIRouter() |
| 35 | + |
| 36 | + for module_name in ROUTE_MODULES: |
| 37 | + module = import_module(f"api.routes.{module_name}") |
| 38 | + router_instance.include_router(module.router) |
| 39 | + |
| 40 | + return router_instance |
| 41 | + |
| 42 | + |
| 43 | +router = _build_router() |
60 | 44 |
|
61 | 45 | __all__ = ["router"] |
0 commit comments