Changeset View
Changeset View
Standalone View
Standalone View
swh/graphql/resolvers/resolver_factory.py
Show All 27 Lines | |||||
) | ) | ||||
from .search import ResolveSwhidList, SearchConnection | from .search import ResolveSwhidList, SearchConnection | ||||
from .snapshot import ( | from .snapshot import ( | ||||
OriginSnapshotConnection, | OriginSnapshotConnection, | ||||
SnapshotNode, | SnapshotNode, | ||||
TargetSnapshotNode, | TargetSnapshotNode, | ||||
VisitSnapshotNode, | VisitSnapshotNode, | ||||
) | ) | ||||
from .snapshot_branch import AliasSnapshotBranchNode, SnapshotBranchConnection | from .snapshot_branch import SnapshotBranchConnection, TargetSnapshotBranchNode | ||||
from .target import TargetNode | |||||
from .visit import LatestVisitNode, OriginVisitConnection, OriginVisitNode | from .visit import LatestVisitNode, OriginVisitConnection, OriginVisitNode | ||||
from .visit_status import LatestVisitStatusNode, VisitStatusConnection | from .visit_status import LatestVisitStatusNode, VisitStatusConnection | ||||
class NodeObjectFactory: | class NodeObjectFactory: | ||||
mapping: ClassVar[Dict[str, Type[BaseNode]]] = { | mapping: ClassVar[Dict[str, Type[BaseNode]]] = { | ||||
"origin": OriginNode, | "origin": OriginNode, | ||||
"visit": OriginVisitNode, | "visit": OriginVisitNode, | ||||
"latest-visit": LatestVisitNode, | "latest-visit": LatestVisitNode, | ||||
"latest-status": LatestVisitStatusNode, | "latest-status": LatestVisitStatusNode, | ||||
"visit-snapshot": VisitSnapshotNode, | "visit-snapshot": VisitSnapshotNode, | ||||
"snapshot": SnapshotNode, | "snapshot": SnapshotNode, | ||||
"branch-alias": AliasSnapshotBranchNode, | |||||
"branch-revision": TargetRevisionNode, | |||||
"branch-release": TargetReleaseNode, | |||||
"branch-directory": TargetDirectoryNode, | |||||
"branch-content": TargetContentNode, | |||||
"branch-snapshot": TargetSnapshotNode, | |||||
"revision": RevisionNode, | "revision": RevisionNode, | ||||
"revision-directory": RevisionDirectoryNode, | "revision-directory": RevisionDirectoryNode, | ||||
"release": ReleaseNode, | "release": ReleaseNode, | ||||
"release-revision": TargetRevisionNode, | |||||
"release-release": TargetReleaseNode, | |||||
"release-directory": TargetDirectoryNode, | |||||
"release-content": TargetContentNode, | |||||
"directory": DirectoryNode, | "directory": DirectoryNode, | ||||
"directory-entry": DirectoryEntryNode, | "directory-entry": DirectoryEntryNode, | ||||
"content-by-hashes": ContentbyHashesNode, | "content-by-hashes": ContentbyHashesNode, | ||||
"dir-entry-content": TargetContentNode, | "target": TargetNode, | ||||
"dir-entry-directory": TargetDirectoryNode, | "target-origin": TargetOriginNode, | ||||
"dir-entry-revision": TargetRevisionNode, | "target-snapshot": TargetSnapshotNode, | ||||
"search-result-origin": TargetOriginNode, | "target-alias": TargetSnapshotBranchNode, | ||||
"search-result-snapshot": TargetSnapshotNode, | "target-revision": TargetRevisionNode, | ||||
"search-result-revision": TargetRevisionNode, | "target-release": TargetReleaseNode, | ||||
"search-result-release": TargetReleaseNode, | "target-directory": TargetDirectoryNode, | ||||
"search-result-directory": TargetDirectoryNode, | "target-content": TargetContentNode, | ||||
"search-result-content": TargetContentNode, | |||||
} | } | ||||
@classmethod | @classmethod | ||||
def create(cls, node_type: str, obj, info, *args, **kw): | def create(cls, node_type: str, obj, info, *args, **kw): | ||||
resolver = cls.mapping.get(node_type) | resolver = cls.mapping.get(node_type) | ||||
if not resolver: | if not resolver: | ||||
raise AttributeError(f"Invalid node type: {node_type}") | raise AttributeError(f"Invalid node type: {node_type}") | ||||
try: | try: | ||||
▲ Show 20 Lines • Show All 46 Lines • Show Last 20 Lines |