11import typing as t
22
3- from ellar .common .constants import (
4- GUARDS_KEY ,
5- NESTED_ROUTERS_KEY ,
6- VERSIONING_KEY ,
7- )
3+ from ellar .common import constants
84from ellar .common .models import GuardCanActivate
95from ellar .common .models .controller import NestedRouterInfo
10- from ellar .di import injectable
116from ellar .reflect import reflect
12- from ellar .utils import get_unique_type
137from starlette .middleware import Middleware
148
159from .base import OperationDefinitions
@@ -31,21 +25,17 @@ def __init__(
3125 include_in_schema : bool = True ,
3226 middleware : t .Optional [t .Sequence [Middleware ]] = None ,
3327 ) -> None :
34- self ._control_type : t .Type [t .Any ] = injectable (get_unique_type ()) # type:ignore[assignment]
28+ # self._control_type: t.Type[t.Any] = injectable(get_unique_type()) # type:ignore[assignment]
3529 self .path = path
3630 self .name = name
3731 self .include_in_schema = include_in_schema
3832 self .middleware = list (middleware ) if middleware else []
3933
40- self ._pre_build_routes : t .List [t .Union [RouteParameters , WsRouteParameters ]] = []
34+ reflect .define_metadata (constants .GUARDS_KEY , guards or [], self )
35+ reflect .define_metadata (constants .VERSIONING_KEY , set (version or []), self )
4136
42- reflect .define_metadata (GUARDS_KEY , guards or [], self .get_controller_type ())
43- reflect .define_metadata (
44- VERSIONING_KEY , set (version or []), self .get_controller_type ()
45- )
46-
47- def get_controller_type (self ) -> t .Type [t .Any ]:
48- return self ._control_type
37+ def __repr__ (self ) -> str :
38+ return f"<ModuleRouter path={ self .path } name={ self .name } >"
4939
5040 def add_router (
5141 self ,
@@ -54,45 +44,27 @@ def add_router(
5444 ) -> None :
5545 if prefix :
5646 assert prefix .startswith ("/" ), "'prefix' must start with '/'"
47+
5748 reflect .define_metadata (
58- NESTED_ROUTERS_KEY ,
49+ constants . NESTED_ROUTERS_KEY ,
5950 [NestedRouterInfo (prefix = prefix , router = router )],
60- self . get_controller_type () ,
51+ self ,
6152 )
6253
63- def get_mount_init (self ) -> t .Dict [str , t .Any ]:
64- return {
65- "path" : self .path ,
66- "name" : self .name ,
67- "include_in_schema" : self .include_in_schema ,
68- "control_type" : self .get_controller_type (),
69- "middleware" : self .middleware ,
70- }
71-
72- def get_pre_build_routes (
73- self ,
74- ) -> t .List [t .Union [RouteParameters , WsRouteParameters ]]:
75- return self ._pre_build_routes
76-
77- def clear_pre_build_routes (self ) -> None :
78- self ._pre_build_routes .clear ()
79-
8054 def _get_operation (self , route_parameter : RouteParameters ) -> t .Callable :
8155 endpoint = super ()._get_operation (route_parameter )
82- self ._pre_build_routes .append (route_parameter )
56+ reflect .define_metadata (
57+ constants .ROUTER_PRE_BUILD_ROUTES , [route_parameter ], self
58+ )
8359 # self._set_other_router_attributes(ensure_function(endpoint))
60+ reflect .define_metadata ("ROUTER_REFLECT_KEY" , self , endpoint )
8461 return endpoint
8562
8663 def _get_ws_operation (self , ws_route_parameters : WsRouteParameters ) -> t .Callable :
8764 endpoint = super ()._get_ws_operation (ws_route_parameters )
88- self ._pre_build_routes .append (ws_route_parameters )
65+ reflect .define_metadata (
66+ constants .ROUTER_PRE_BUILD_ROUTES , [ws_route_parameters ], self
67+ )
8968 # self._set_other_router_attributes(ensure_function(endpoint))
69+ reflect .define_metadata ("ROUTER_REFLECT_KEY" , self , endpoint )
9070 return endpoint
91-
92- # def _set_other_router_attributes(self, operation_handler: t.Callable) -> None:
93- # if not reflect.has_metadata(CONTROLLER_CLASS_KEY, operation_handler):
94- # # this is needed to happen before adding operation to router else we lose ability to
95- # # get extra information about operation that is set on the router.
96- # reflect.define_metadata(
97- # CONTROLLER_CLASS_KEY, self.get_controller_type(), operation_handler
98- # )
0 commit comments