Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/cassandra/storage.py
Show First 20 Lines • Show All 882 Lines • ▼ Show 20 Lines | def origin_visit_add(self, visits: List[OriginVisit]) -> Iterable[OriginVisit]: | ||||
self._cql_runner.origin_visit_add_one(OriginVisitRow(**visit.to_dict())) | self._cql_runner.origin_visit_add_one(OriginVisitRow(**visit.to_dict())) | ||||
assert visit.visit is not None | assert visit.visit is not None | ||||
all_visits.append(visit) | all_visits.append(visit) | ||||
self._origin_visit_status_add( | self._origin_visit_status_add( | ||||
OriginVisitStatus( | OriginVisitStatus( | ||||
origin=visit.origin, | origin=visit.origin, | ||||
visit=visit.visit, | visit=visit.visit, | ||||
date=visit.date, | date=visit.date, | ||||
type=visit.type, | |||||
status="created", | status="created", | ||||
snapshot=None, | snapshot=None, | ||||
) | ) | ||||
) | ) | ||||
return all_visits | return all_visits | ||||
def _origin_visit_status_add(self, visit_status: OriginVisitStatus) -> None: | def _origin_visit_status_add(self, visit_status: OriginVisitStatus) -> None: | ||||
"""Add an origin visit status""" | """Add an origin visit status""" | ||||
if visit_status.type is None: | |||||
origin_row = self._cql_runner.origin_visit_get_one( | |||||
visit_status.origin, visit_status.visit | |||||
) | |||||
if origin_row is None: | |||||
raise StorageArgumentException(f"Unknown origin {visit_status.origin}") | |||||
visit_status = attr.evolve(visit_status, type=origin_row.type) | |||||
self.journal_writer.origin_visit_status_add([visit_status]) | self.journal_writer.origin_visit_status_add([visit_status]) | ||||
self._cql_runner.origin_visit_status_add_one( | self._cql_runner.origin_visit_status_add_one( | ||||
converters.visit_status_to_row(visit_status) | converters.visit_status_to_row(visit_status) | ||||
) | ) | ||||
def origin_visit_status_add(self, visit_statuses: List[OriginVisitStatus]) -> None: | def origin_visit_status_add(self, visit_statuses: List[OriginVisitStatus]) -> None: | ||||
# First round to check existence (fail early if any is ko) | # First round to check existence (fail early if any is ko) | ||||
for visit_status in visit_statuses: | for visit_status in visit_statuses: | ||||
Show All 16 Lines | ) -> Dict[str, Any]: | ||||
**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"], | ||||
# We use the visit type from origin visit | |||||
# if it's not present on the origin visit status | |||||
"type": visit_status.type or visit["type"], | |||||
} | } | ||||
def _origin_visit_get_latest_status(self, visit: OriginVisit) -> OriginVisitStatus: | def _origin_visit_get_latest_status(self, visit: OriginVisit) -> OriginVisitStatus: | ||||
"""Retrieve the latest visit status information for the origin visit object. | """Retrieve the latest visit status information for the origin visit object. | ||||
""" | """ | ||||
assert visit.visit | assert visit.visit | ||||
row = self._cql_runner.origin_visit_status_get_latest(visit.origin, visit.visit) | row = self._cql_runner.origin_visit_status_get_latest(visit.origin, visit.visit) | ||||
▲ Show 20 Lines • Show All 385 Lines • Show Last 20 Lines |