Changeset View
Changeset View
Standalone View
Standalone View
swh/graphql/resolvers/resolver_factory.py
# Copyright (C) 2022 The Software Heritage developers | # Copyright (C) 2022 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from typing import ClassVar, Dict, Type | from typing import ClassVar, Dict, Type | ||||
from swh.graphql.errors import NullableObjectError | from swh.graphql.errors import NullableObjectError | ||||
from .base_connection import BaseConnection, BaseList | from .base_connection import BaseConnection, BaseList | ||||
from .base_node import BaseNode | from .base_node import BaseNode | ||||
from .content import ContentNode, HashContentNode, TargetContentNode | from .content import ( | ||||
ContentbyHashesNode, | |||||
ContentHashList, | |||||
ContentSwhidList, | |||||
TargetContentNode, | |||||
) | |||||
from .directory import DirectoryNode, RevisionDirectoryNode, TargetDirectoryNode | from .directory import DirectoryNode, RevisionDirectoryNode, TargetDirectoryNode | ||||
from .directory_entry import DirectoryEntryConnection, DirectoryEntryNode | from .directory_entry import DirectoryEntryConnection, DirectoryEntryNode | ||||
from .origin import OriginConnection, OriginNode, TargetOriginNode | from .origin import OriginConnection, OriginNode, TargetOriginNode | ||||
from .person import ReleaseAuthorList, RevisionAuthorList, RevisionCommitterList | from .person import ReleaseAuthorList, RevisionAuthorList, RevisionCommitterList | ||||
from .release import ReleaseNode, TargetReleaseNode | from .release import ReleaseNode, TargetReleaseNode | ||||
from .revision import ( | from .revision import ( | ||||
LogRevisionConnection, | LogRevisionConnection, | ||||
ParentRevisionConnection, | ParentRevisionConnection, | ||||
Show All 30 Lines | mapping: ClassVar[Dict[str, Type[BaseNode]]] = { | ||||
"revision-directory": RevisionDirectoryNode, | "revision-directory": RevisionDirectoryNode, | ||||
"release": ReleaseNode, | "release": ReleaseNode, | ||||
"release-revision": TargetRevisionNode, | "release-revision": TargetRevisionNode, | ||||
"release-release": TargetReleaseNode, | "release-release": TargetReleaseNode, | ||||
"release-directory": TargetDirectoryNode, | "release-directory": TargetDirectoryNode, | ||||
"release-content": TargetContentNode, | "release-content": TargetContentNode, | ||||
"directory": DirectoryNode, | "directory": DirectoryNode, | ||||
"directory-entry": DirectoryEntryNode, | "directory-entry": DirectoryEntryNode, | ||||
"content": ContentNode, | "content-by-hashes": ContentbyHashesNode, | ||||
"content-by-hash": HashContentNode, | |||||
"dir-entry-content": TargetContentNode, | "dir-entry-content": TargetContentNode, | ||||
"dir-entry-directory": TargetDirectoryNode, | "dir-entry-directory": TargetDirectoryNode, | ||||
"dir-entry-revision": TargetRevisionNode, | "dir-entry-revision": TargetRevisionNode, | ||||
"search-result-origin": TargetOriginNode, | "search-result-origin": TargetOriginNode, | ||||
"search-result-snapshot": TargetSnapshotNode, | "search-result-snapshot": TargetSnapshotNode, | ||||
"search-result-revision": TargetRevisionNode, | "search-result-revision": TargetRevisionNode, | ||||
"search-result-release": TargetReleaseNode, | "search-result-release": TargetReleaseNode, | ||||
"search-result-directory": TargetDirectoryNode, | "search-result-directory": TargetDirectoryNode, | ||||
Show All 35 Lines | |||||
class SimpleListFactory: | class SimpleListFactory: | ||||
mapping: ClassVar[Dict[str, Type[BaseList]]] = { | mapping: ClassVar[Dict[str, Type[BaseList]]] = { | ||||
"resolve-swhid": ResolveSwhidList, | "resolve-swhid": ResolveSwhidList, | ||||
"revision-author": RevisionAuthorList, | "revision-author": RevisionAuthorList, | ||||
"revision-committer": RevisionCommitterList, | "revision-committer": RevisionCommitterList, | ||||
"release-author": ReleaseAuthorList, | "release-author": ReleaseAuthorList, | ||||
"contents-swhid": ContentSwhidList, | |||||
"contents-hashes": ContentHashList, | |||||
} | } | ||||
@classmethod | @classmethod | ||||
def create(cls, list_type: str, obj, info, *args, **kw): | def create(cls, list_type: str, obj, info, *args, **kw): | ||||
resolver = cls.mapping.get(list_type) | resolver = cls.mapping.get(list_type) | ||||
if not resolver: | if not resolver: | ||||
raise AttributeError(f"Invalid list type: {list_type}") | raise AttributeError(f"Invalid list type: {list_type}") | ||||
# invoke the get_results method to return the list | # invoke the get_results method to return the list | ||||
return resolver(obj, info, *args, **kw).get_results() | return resolver(obj, info, *args, **kw).get_results() |