Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/cassandra/storage.py
Show First 20 Lines • Show All 803 Lines • ▼ Show 20 Lines | def origin_visit_add(self, visits: Iterable[OriginVisit]) -> Iterable[OriginVisit]: | ||||
visit_id = self._cql_runner.origin_generate_unique_visit_id( | visit_id = self._cql_runner.origin_generate_unique_visit_id( | ||||
visit.origin | visit.origin | ||||
) | ) | ||||
visit = attr.evolve(visit, visit=visit_id) | visit = attr.evolve(visit, visit=visit_id) | ||||
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) | ||||
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( | |||||
visit_status_dict = visit.to_dict() | OriginVisitStatus( | ||||
visit_status_dict.pop("type") | origin=visit.origin, | ||||
visit_status = OriginVisitStatus.from_dict(visit_status_dict) | visit=visit.visit, | ||||
self._origin_visit_status_add(visit_status) | date=visit.date, | ||||
status="created", | |||||
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""" | ||||
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(visit_status) | self._cql_runner.origin_visit_status_add_one(visit_status) | ||||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | def _origin_visit_get_updated(self, origin: str, visit_id: int) -> Dict[str, Any]: | ||||
return self._origin_visit_apply_last_status(visit) | return self._origin_visit_apply_last_status(visit) | ||||
@staticmethod | @staticmethod | ||||
def _format_origin_visit_row(visit): | def _format_origin_visit_row(visit): | ||||
return { | return { | ||||
**visit._asdict(), | **visit._asdict(), | ||||
"origin": visit.origin, | "origin": visit.origin, | ||||
"date": visit.date.replace(tzinfo=datetime.timezone.utc), | "date": visit.date.replace(tzinfo=datetime.timezone.utc), | ||||
"metadata": (json.loads(visit.metadata) if visit.metadata else None), | |||||
} | } | ||||
def origin_visit_get( | def origin_visit_get( | ||||
self, origin: str, last_visit: Optional[int] = None, limit: Optional[int] = None | self, origin: str, last_visit: Optional[int] = None, limit: Optional[int] = None | ||||
) -> Iterable[Dict[str, Any]]: | ) -> Iterable[Dict[str, Any]]: | ||||
rows = self._cql_runner.origin_visit_get(origin, last_visit, limit) | rows = self._cql_runner.origin_visit_get(origin, last_visit, limit) | ||||
for row in rows: | for row in rows: | ||||
visit = self._format_origin_visit_row(row) | visit = self._format_origin_visit_row(row) | ||||
▲ Show 20 Lines • Show All 265 Lines • Show Last 20 Lines |