Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/cassandra/storage.py
Show First 20 Lines • Show All 837 Lines • ▼ Show 20 Lines | ) -> None: | ||||
for visit_status in visit_statuses: | for visit_status in visit_statuses: | ||||
origin_url = self.origin_get({"url": visit_status.origin}) | origin_url = self.origin_get({"url": visit_status.origin}) | ||||
if not origin_url: | if not origin_url: | ||||
raise StorageArgumentException(f"Unknown origin {visit_status.origin}") | raise StorageArgumentException(f"Unknown origin {visit_status.origin}") | ||||
for visit_status in visit_statuses: | for visit_status in visit_statuses: | ||||
self._origin_visit_status_add(visit_status) | self._origin_visit_status_add(visit_status) | ||||
def _origin_visit_merge( | def _origin_visit_apply_last_status(self, visit: Dict[str, Any]) -> Dict[str, Any]: | ||||
self, visit: Dict[str, Any], visit_status: OriginVisitStatus, | """Retrieve the latest visit status information for the origin visit. | ||||
) -> Dict[str, Any]: | Then merge it with the visit and return it. | ||||
"""Merge origin_visit and visit_status together. | |||||
""" | """ | ||||
return OriginVisit.from_dict( | row = self._cql_runner.origin_visit_status_get_latest( | ||||
{ | visit["origin"], visit["visit"] | ||||
) | |||||
assert row is not None | |||||
visit_status = row_to_visit_status(row) | |||||
return { | |||||
# default to the values in visit | # default to the values in visit | ||||
**visit, | **visit, | ||||
# override with the last update | # override with the last update | ||||
**visit_status.to_dict(), | **visit_status.to_dict(), | ||||
# visit['origin'] is the URL (via a join), while | # visit['origin'] is the URL (via a join), while | ||||
# visit_status['origin'] is only an id. | # visit_status['origin'] is only an id. | ||||
"origin": visit["origin"], | "origin": visit["origin"], | ||||
# but keep the date of the creation of the origin visit | # but keep the date of the creation of the origin visit | ||||
"date": visit["date"], | "date": visit["date"], | ||||
} | } | ||||
).to_dict() | |||||
def _origin_visit_apply_last_status(self, visit: Dict[str, Any]) -> Dict[str, Any]: | |||||
"""Retrieve the latest visit status information for the origin visit. | |||||
Then merge it with the visit and return it. | |||||
""" | |||||
row = self._cql_runner.origin_visit_status_get_latest( | |||||
visit["origin"], visit["visit"] | |||||
) | |||||
assert row is not None | |||||
return self._origin_visit_merge(visit, row_to_visit_status(row)) | |||||
def _origin_visit_get_updated(self, origin: str, visit_id: int) -> Dict[str, Any]: | def _origin_visit_get_updated(self, origin: str, visit_id: int) -> Dict[str, Any]: | ||||
"""Retrieve origin visit and latest origin visit status and merge them | """Retrieve origin visit and latest origin visit status and merge them | ||||
into an origin visit. | into an origin visit. | ||||
""" | """ | ||||
row_visit = self._cql_runner.origin_visit_get_one(origin, visit_id) | row_visit = self._cql_runner.origin_visit_get_one(origin, visit_id) | ||||
assert row_visit is not None | assert row_visit is not None | ||||
▲ Show 20 Lines • Show All 375 Lines • Show Last 20 Lines |