Source code for swh.graphql.resolvers.visit

# Copyright (C) 2022 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information

from swh.graphql.utils import utils

from .base_connection import BaseConnection, ConnectionData
from .base_node import BaseNode
from .origin import OriginNode

[docs] class BaseVisitNode(BaseNode): """ Base resolver for all the visit nodes """ @property def id(self): # FIXME, use a better id return utils.get_b64_string(f"{self.origin}-{str(self.visit)}") @property def visitId(self): # To support the schema naming convention return self._node.visit
[docs] class OriginVisitNode(BaseVisitNode): """ Node resolver for a visit requested directly with an origin URL and a visit ID """ def _get_node_data(self): return self.archive.get_origin_visit( self.kwargs.get("originUrl"), int(self.kwargs.get("visitId")) )
[docs] class LatestVisitNode(BaseVisitNode): """ Node resolver for the latest visit in an origin """ _can_be_null = True obj: OriginNode def _get_node_data(self): # self.obj.url is the origin URL return self.archive.get_origin_latest_visit( origin_url=self.obj.url, visit_type=self.kwargs.get("visitType"), allowed_statuses=self.kwargs.get("allowedStatuses"), require_snapshot=self.kwargs.get("requireSnapshot"), )
[docs] class OriginVisitConnection(BaseConnection): """ Connection resolver for the visit objects in an origin """ obj: OriginNode _node_class = BaseVisitNode def _get_connection_data(self) -> ConnectionData: # self.obj.url is the origin URL return ConnectionData( paged_result=self.archive.get_origin_visits( self.obj.url, after=self._get_after_arg(), first=self._get_first_arg(), order=utils.get_storage_list_order(self.kwargs.get("sort", "ASC")), ) ) def _get_index_cursor(self, index: int, node: BaseVisitNode): # Origin visit is using a different cursor, hence the override # No item cursor is provided in this case # FIXME: Return the right cursor when enabling index cursors return None