Coverage for graphqler / compiler / resolvers / query_object_resolver.py: 100%

11 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-18 23:20 -0400

1""" 

2This will resolve the inputs of a query to object. A few fields will be introduced to a query, namely: 

3hardDependsOn: A dictionary of inputname-object name that is required 

4 in the input (NON-NULL), depends on, ie: {'userId': 'User'} 

5softDependsOn: A dictionary of inputname-object name, depends on, ie: {'userId': 'User'} 

6""" 

7 

8from .resolver import Resolver 

9 

10 

11class QueryObjectResolver(Resolver): 

12 def __init__(self): 

13 super().__init__() 

14 

15 def resolve( 

16 self, 

17 objects: dict, 

18 queries: dict, 

19 input_objects: dict, 

20 ) -> dict: 

21 """Resolve query inputs to queries based on semantical understanding of IDs 

22 

23 Args: 

24 objects (dict): Objects to link the mutations to 

25 queries (dict): Queries to parse through 

26 input_objects (dict): Input objects to recursively search through different input object inputs 

27 

28 Returns: 

29 dict: The mutations enriched with aforementioned fields 

30 """ 

31 for query_name, query in queries.items(): 

32 inputs_related_to_ids = self.get_inputs_related_to_ids(query["inputs"], input_objects) 

33 resolved_objects_to_inputs = self.resolve_inputs_related_to_ids_to_objects(query_name, inputs_related_to_ids, objects) 

34 

35 # Assign the enrichments 

36 queries[query_name]["hardDependsOn"] = resolved_objects_to_inputs["hardDependsOn"] 

37 queries[query_name]["softDependsOn"] = resolved_objects_to_inputs["softDependsOn"] 

38 

39 return queries