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
« 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"""
8from .resolver import Resolver
11class QueryObjectResolver(Resolver):
12 def __init__(self):
13 super().__init__()
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
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
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)
35 # Assign the enrichments
36 queries[query_name]["hardDependsOn"] = resolved_objects_to_inputs["hardDependsOn"]
37 queries[query_name]["softDependsOn"] = resolved_objects_to_inputs["softDependsOn"]
39 return queries