feat: optimize interceptors
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
from typing import List
|
from typing import List, Dict
|
||||||
|
|
||||||
|
|
||||||
class GeneralInterceptor():
|
class GeneralInterceptor():
|
||||||
@@ -33,11 +33,13 @@ class GeneralInterceptor():
|
|||||||
self.after_delete = after_delete
|
self.after_delete = after_delete
|
||||||
|
|
||||||
|
|
||||||
_general_interceptors: List[GeneralInterceptor] = []
|
_general_interceptors: Dict[str, GeneralInterceptor] = []
|
||||||
|
|
||||||
|
|
||||||
def add_general_interceptor(interceptor: GeneralInterceptor):
|
def add_general_interceptor(interceptor: GeneralInterceptor):
|
||||||
_general_interceptors.append(interceptor)
|
target_interceptor_list = _general_interceptors.get(interceptor.module, [])
|
||||||
|
target_interceptor_list.append(interceptor)
|
||||||
|
_general_interceptors[interceptor.module] = target_interceptor_list
|
||||||
|
|
||||||
|
|
||||||
async def invoke_interceptor(method: str, module: str, **kwargs):
|
async def invoke_interceptor(method: str, module: str, **kwargs):
|
||||||
@@ -45,7 +47,7 @@ async def invoke_interceptor(method: str, module: str, **kwargs):
|
|||||||
module = module[1:]
|
module = module[1:]
|
||||||
if module.endswith('/'):
|
if module.endswith('/'):
|
||||||
module = module[:-1]
|
module = module[:-1]
|
||||||
match_interceptors = [item for item in _general_interceptors if item.module == module]
|
match_interceptors = _general_interceptors.get(module, [])
|
||||||
for item in match_interceptors:
|
for item in match_interceptors:
|
||||||
interceptor_method = getattr(item, method, None) # 使用 getattr 获取方法
|
interceptor_method = getattr(item, method, None) # 使用 getattr 获取方法
|
||||||
if interceptor_method and callable(interceptor_method):
|
if interceptor_method and callable(interceptor_method):
|
||||||
|
|||||||
Reference in New Issue
Block a user