diff --git a/swh/graphql/resolvers/content.py b/swh/graphql/resolvers/content.py index 74d80a8..1f7ae1e 100644 --- a/swh/graphql/resolvers/content.py +++ b/swh/graphql/resolvers/content.py @@ -1,55 +1,54 @@ from swh.graphql.backends import archive from swh.graphql.utils import utils from .base_node import BaseNode class BaseContentNode(BaseNode): - """ - """ + """ """ def _get_content_by_id(self, content_id): content = archive.Archive().get_content(content_id) return content[0] if content else None @property def id(self): return self._node.unique_key() @property def swhid(self): return self._node.swhid() @property def checksum(self): # FIXME, return a Node object return self._node.hashes() @property def data(self): return def is_type_of(self): return "Content" class ContentNode(BaseContentNode): def _get_node_data(self): """ When a content is requested directly with an id """ content_id = utils.str_to_swid(self.kwargs.get("SWHID")) return self._get_content_by_id(content_id) class TargetContentNode(BaseContentNode): def _get_node_data(self): """ When a content is requested from a directory entry or from a release target content id is obj.target here """ content_id = self.obj.target return self._get_content_by_id(content_id) diff --git a/swh/graphql/resolvers/resolver_factory.py b/swh/graphql/resolvers/resolver_factory.py index 02af904..18ef831 100644 --- a/swh/graphql/resolvers/resolver_factory.py +++ b/swh/graphql/resolvers/resolver_factory.py @@ -1,62 +1,51 @@ from .content import ContentNode, TargetContentNode from .directory import DirectoryNode, RevisionDirectoryNode, TargetDirectoryNode from .directory_entry import DirectoryEntryConnection from .origin import OriginConnection, OriginNode from .release import ReleaseNode, TargetReleaseNode from .revision import ParentRevisionConnection, RevisionNode, TargetRevisionNode from .snapshot import SnapshotNode, VisitSnapshotNode from .snapshot_branch import SnapshotBranchConnection from .visit import OriginVisitConnection, OriginVisitNode from .visit_status import VisitStatusConnection -# def get_mapping_key(info): -# """ -# Logic to resolve mapping type -# """ -# # FIXME, move to utils -# if info.path.prev: -# return f"{info.path.prev.key}_{info.path.key}" -# return info.path.key - def get_node_resolver(resolver_type): # FIXME, replace with a proper factory method mapping = { "origin": OriginNode, "visit": OriginVisitNode, "visit-snapshot": VisitSnapshotNode, "snapshot": SnapshotNode, "branch-revision": TargetRevisionNode, - "release-revision": TargetRevisionNode, "branch-release": TargetReleaseNode, - "release-release": TargetReleaseNode, - "release-directory": TargetDirectoryNode, - "release-content": TargetContentNode, "revision": RevisionNode, "revision-directory": RevisionDirectoryNode, "release": ReleaseNode, + "release-revision": TargetRevisionNode, + "release-release": TargetReleaseNode, + "release-directory": TargetDirectoryNode, + "release-content": TargetContentNode, "directory": DirectoryNode, "content": ContentNode, "dir-entry-dir": TargetDirectoryNode, "dir-entry-file": TargetContentNode, } - # resolver_type = get_mapping_key(info) # FIXME, get full name if resolver_type not in mapping: - raise AttributeError(f"Invalid type request {resolver_type}") + raise AttributeError(f"Invalid node type: {resolver_type}") return mapping[resolver_type] def get_connection_resolver(resolver_type): # FIXME, replace with a proper factory method mapping = { "origins": OriginConnection, "origin-visits": OriginVisitConnection, "visit-status": VisitStatusConnection, "snapshot-branches": SnapshotBranchConnection, "revision-parents": ParentRevisionConnection, "directory-entries": DirectoryEntryConnection, } - # resolver_type = get_mapping_key(info) # FIXME, get full name if resolver_type not in mapping: - raise AttributeError(f"Invalid type request {resolver_type}") + raise AttributeError(f"Invalid connection type: {resolver_type}") return mapping[resolver_type]