Changeset View
Changeset View
Standalone View
Standalone View
swh/graphql/resolvers/target.py
- This file was added.
# from typing import Union | |||||
from swh.model.swhids import CoreSWHID, ObjectType | |||||
from .base_node import BaseNode | |||||
class TargetNode(BaseNode): | |||||
# node field of a target object is resolved in the top level | |||||
# resolver (swh.graphql.resolvers.resolvers::target_node_resolver) | |||||
# obj: Union[ | |||||
# BaseReleaseNode, | |||||
# BaseDirectoryEntryNode | |||||
# ] | |||||
def _get_target_swhid(self, target_type: str, target_id): | |||||
mapping = { | |||||
"revision": ObjectType.REVISION, | |||||
"release": ObjectType.RELEASE, | |||||
"snapshot": ObjectType.SNAPSHOT, | |||||
"directory": ObjectType.DIRECTORY, | |||||
"content": ObjectType.CONTENT, | |||||
} | |||||
return CoreSWHID(object_type=mapping[target_type], object_id=target_id) | |||||
def _get_node_data(self): | |||||
# node field of a target object is resolved in the top level | |||||
# resolver (swh.graphql.resolvers.resolvers::target_node_resolver) | |||||
return { | |||||
# field exposed in the schema | |||||
"type": self.obj.target_type, | |||||
# field exposed in the schema | |||||
"swhid": self._get_target_swhid(self.obj.target_type, self.obj.target_id), | |||||
# field NOT exposed in schema, used to get the target object | |||||
"target_id": self.obj.target_id, | |||||
} |