Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/cassandra/storage.py
Show First 20 Lines • Show All 787 Lines • ▼ Show 20 Lines | def origin_visit_add(self, origin: Origin, | ||||
}) | }) | ||||
except (KeyError, TypeError, ValueError) as e: | except (KeyError, TypeError, ValueError) as e: | ||||
raise StorageArgumentException(*e.args) | raise StorageArgumentException(*e.args) | ||||
self.journal_writer.origin_visit_add(visit) | self.journal_writer.origin_visit_add(visit) | ||||
self._cql_runner.origin_visit_add_one(visit) | self._cql_runner.origin_visit_add_one(visit) | ||||
return visit | return visit | ||||
def origin_visit_update( | def origin_visit_update( | ||||
self, origin: Origin, visit: OriginVisit, | self, visit: OriginVisit, | ||||
status: Optional[str] = None, metadata: Optional[Dict] = None, | status: Optional[str] = None, metadata: Optional[Dict] = None, | ||||
snapshot: Optional[bytes] = None) -> None: | snapshot: Optional[bytes] = None) -> None: | ||||
# Get the existing data of the visit | # Get the existing data of the visit | ||||
row = self._cql_runner.origin_visit_get_one(origin.url, visit.visit) | row = self._cql_runner.origin_visit_get_one(visit.origin, visit.visit) | ||||
if not row: | if not row: | ||||
raise StorageArgumentException( | raise StorageArgumentException( | ||||
'origin visit %s for origin %s does not exist.', | 'origin visit %s for origin %s does not exist.', | ||||
visit.visit, origin.url) | visit.visit, visit.origin) | ||||
try: | try: | ||||
visit = OriginVisit.from_dict(self._format_origin_visit_row(row)) | visit = OriginVisit.from_dict(self._format_origin_visit_row(row)) | ||||
except (KeyError, TypeError, ValueError) as e: | except (KeyError, TypeError, ValueError) as e: | ||||
raise StorageArgumentException(*e.args) | raise StorageArgumentException(*e.args) | ||||
updates: Dict[str, Any] = {} | updates: Dict[str, Any] = {} | ||||
if status: | if status: | ||||
updates['status'] = status | updates['status'] = status | ||||
if metadata: | if metadata: | ||||
updates['metadata'] = metadata | updates['metadata'] = metadata | ||||
if snapshot: | if snapshot: | ||||
updates['snapshot'] = snapshot | updates['snapshot'] = snapshot | ||||
try: | try: | ||||
visit = attr.evolve(visit, **updates) | visit = attr.evolve(visit, **updates) | ||||
except (KeyError, TypeError, ValueError) as e: | except (KeyError, TypeError, ValueError) as e: | ||||
raise StorageArgumentException(*e.args) | raise StorageArgumentException(*e.args) | ||||
self.journal_writer.origin_visit_update(visit) | self.journal_writer.origin_visit_update(visit) | ||||
self._cql_runner.origin_visit_update(origin.url, visit.visit, updates) | self._cql_runner.origin_visit_update( | ||||
visit.origin, visit.visit, updates) | |||||
def origin_visit_upsert(self, visits: Iterable[OriginVisit]) -> None: | def origin_visit_upsert(self, visits: Iterable[OriginVisit]) -> None: | ||||
self.journal_writer.origin_visit_upsert(visits) | self.journal_writer.origin_visit_upsert(visits) | ||||
for visit in visits: | for visit in visits: | ||||
metadata = visit.metadata | metadata = visit.metadata | ||||
if metadata: | if metadata: | ||||
visit = attr.evolve(visit, metadata=json.dumps(metadata)) | visit = attr.evolve(visit, metadata=json.dumps(metadata)) | ||||
▲ Show 20 Lines • Show All 121 Lines • Show Last 20 Lines |