Skip to content

Commit fa1e924

Browse files
iyangingsyfun
authored andcommitted
feat: detect duplicate resolver registration
1 parent fcdbc6c commit fa1e924

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

gql/resolver.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@
3131

3232

3333
def reference_resolver(type_name: str):
34+
if type_name in reference_resolver_map:
35+
raise Exception(
36+
f"{type_name} is already registered by "
37+
f"{reference_resolver_map[type_name].__code__}"
38+
)
39+
3440
def wrap(func: ReferenceResolver):
3541
@wraps(func)
3642
def sync_resolver(*args, **kwargs):
@@ -60,6 +66,12 @@ async def async_resolver(*args, **kwargs):
6066

6167

6268
def type_resolver(type_name: str):
69+
if type_name in type_resolver_map:
70+
raise Exception(
71+
f"{type_name} is already registered by "
72+
f"{type_resolver_map[type_name].__code__}"
73+
)
74+
6375
def wrap(func):
6476
type_resolver_map[type_name] = func
6577
return func
@@ -105,6 +117,12 @@ async def async_resolver(*args, **kwargs):
105117
else:
106118
name = to_camel_case(func.__name__)
107119

120+
if type_name in field_resolver_map and name in field_resolver_map[type_name]:
121+
raise Exception(
122+
f"{type_name}.{name} is already registered by "
123+
f"{field_resolver_map[type_name][name].__code__}"
124+
)
125+
108126
if iscoroutinefunction(func):
109127
field_resolver_map[type_name][name] = async_resolver
110128
return async_resolver

0 commit comments

Comments
 (0)