|
15 | 15 | class SQLAlchemyPanel(SQLPanel): |
16 | 16 | title = "SQLAlchemy" |
17 | 17 |
|
| 18 | + def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: |
| 19 | + super().__init__(*args, **kwargs) |
| 20 | + self.engines: t.Set[Engine] = set() |
| 21 | + |
18 | 22 | def register(self, engine: Engine) -> None: |
19 | 23 | event.listen(engine, "before_cursor_execute", self.before_execute) |
20 | 24 | event.listen(engine, "after_cursor_execute", self.after_execute) |
@@ -51,31 +55,31 @@ def after_execute( |
51 | 55 | } |
52 | 56 | self.add_query(str(conn.engine.url), query) |
53 | 57 |
|
54 | | - async def process_request(self, request: Request) -> Response: |
55 | | - engines: t.Set[Engine] = set() |
| 58 | + async def add_engines(self, request: Request): |
56 | 59 | route = request.scope["route"] |
57 | 60 |
|
58 | 61 | if hasattr(route, "dependant"): |
59 | 62 | if request.scope.get("fastapi_astack") is None: |
60 | 63 | async with AsyncExitStack() as stack: |
61 | 64 | request.scope["fastapi_astack"] = stack |
62 | | - try: |
63 | | - solved_result = await solve_dependencies( |
64 | | - request=request, |
65 | | - dependant=route.dependant, |
66 | | - dependency_overrides_provider=route.dependency_overrides_provider, |
67 | | - ) |
68 | | - except Exception: |
69 | | - pass |
70 | | - else: |
71 | | - for value in solved_result[0].values(): |
72 | | - if isinstance(value, Session): |
73 | | - engine = value.get_bind() |
74 | | - engines.add(engine) |
75 | | - self.register(engine) |
| 65 | + |
| 66 | + solved_result = await solve_dependencies( |
| 67 | + request=request, |
| 68 | + dependant=route.dependant, |
| 69 | + dependency_overrides_provider=route.dependency_overrides_provider, |
| 70 | + ) |
| 71 | + for value in solved_result[0].values(): |
| 72 | + if isinstance(value, Session): |
| 73 | + self.engines.add(value.get_bind()) |
| 74 | + |
| 75 | + async def process_request(self, request: Request) -> Response: |
| 76 | + await self.add_engines(request) |
| 77 | + |
| 78 | + for engine in self.engines: |
| 79 | + self.register(engine) |
76 | 80 | try: |
77 | 81 | response = await super().process_request(request) |
78 | 82 | finally: |
79 | | - for engine in engines: |
| 83 | + for engine in self.engines: |
80 | 84 | self.unregister(engine) |
81 | 85 | return response |
0 commit comments